簡體   English   中英

如何將動態變量傳遞給另一種形式?

[英]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不知道除了實例什么btnBoostbtnBreak 您需要為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM