我有两个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传递一个变量,该变量将每个timertick的值更改为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
被宣布为公开,其值始终为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.
我想从inside(?)调用变量
public Form1()
方法,这样我就可以得到变化的值,而不仅仅是0。
希望这能描述我的问题。
谢谢!
答案 0 :(得分:0)
您需要访问更改值的实例。在您的代码中,Form2
除了btnBoost
和btnBreak
之外不知道有关该实例的任何信息。您需要将Form1
实例的引用提供给Form2
的构造函数:
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();
}
现在您可以在_form1.ValueIWant
中访问Form2
。
此外,您还可以从构造函数中省略这两个按钮,因为无论如何它们可能都是Form1
的组件。在这种情况下,您需要在Form1
public
属性中创建适当的字段,
class Form1
{
public Button BreakButton => btnBreak;
}
您现在可以通过哪种方式使用_form1.BreakButton
。