[英]How to pass dynamic variables to another form?
我有兩個 Form1 和 Form2,它們都已經相互“連接”了。 我已經在它們之間傳遞按鈕信號、軌跡欄值、計時器滴答聲……。
Form1 中的連接如下所示:
private void Form1_Load(object sender, EventArgs e)
{
Form2 = new Form2(timer1,btnBoost,btnBrake);
Form2.Show();
}
在 Form2 中:
public Form2(Timer timer,Button Boost,Button Brake)
{
InitializeComponent();
_timer = timer;
_boost = Boost;
_brake = Brake;
}
現在我想從 Form1 傳遞一個變量,它會在每個 timetick 到 Form2 時更改它的值,以創建一個圖形。
在 Form1 中,它看起來像這樣
public partial class Form1 : Form {
public double ValueThatIWant;
}
方式完成我給它一個價值
private void Timer1_Tick1(object sender, EventArgs e){
ValueThatIWant = Math.Sqrt(somevalue.X,somevalue.Y);
}
我已經嘗試通過從 Form2 調用 Form1 來訪問變量
Form1.valueThatIWant
但由於
public double valueThatIWant
被聲明為 public,它的值總是 0。
private void FillChart()
{
this.chart1.Series["Velocity"].Points.AddXY(time,Form1.ValueThatIWant);
}
//That's the method I've created in Form2 to create a chart.
我想從內部(?)調用變量
public Form1()
方法,以便我獲得不斷變化的值,而不僅僅是 0。
希望這能描述我的問題。
提前致謝!
您需要訪問更改值的實例。 在你的代碼Form2
不知道除了實例什么btnBoost
和btnBreak
。 您需要為Form2
的構造函數提供對Form1
實例的引用:
public Form2(Timer timer, Form1 f1, Button Boost, Button Brake)
{
InitializeComponent();
_form1 = f1;
_timer = timer;
_boost = Boost;
_brake = Brake;
}
在你的Form1
代碼中,你現在需要這個:
private void Form1_Load(object sender, EventArgs e)
{
Form2 = new Form2(timer1,this,btnBoost,btnBrake);
Form2.Show();
}
代替:
private void Form1_Load(object sender, EventArgs e)
{
Form2 = new Form2(timer1,btnBoost,btnBrake);
Form2.Show();
}
現在您可以在Form2
訪問_form1.ValueIWant
。
此外,您還可以從構造函數中省略這兩個按鈕,因為無論如何它們都可能是Form1
組件。 在這種情況下,您需要在Form1
public
屬性中創建適當的字段,但是:
class Form1
{
public Button BreakButton => btnBreak;
}
您現在可以通過哪種方式使用_form1.BreakButton
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.