【发布时间】:2023-03-13 14:52:01
【问题描述】:
我有两个 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
被声明为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。
希望这能描述我的问题。
提前致谢!
【问题讨论】:
-
"被声明为 public,它的值总是 0。"嗯?访问修饰符对字段的值绝对没有影响。当然,您必须在某处为该字段分配一个值。但是,我没有看到您正在执行此操作的任何代码。
-
我们在这里需要一个minimal reproducible example。我们猜不出你做了什么,你需要给我们看看。
-
所以我已将 Form1 中的变量声明为 public double ValueThatIWant。完成后,我在每个计时器滴答声中传递这个变量一个值。在 Form1 中我可以很好地使用它,但从 Form2 来看,变量似乎总是 0。
-
您是如何“连接”您的两个类并将信号和值相互传递的?您需要正确的
Form1实例。我想在你的Form2中你已经创建了一个Form1的新实例,它与你设置值的实例无关。但是,如果不了解这种“联系”的样子,就很难进一步帮助您。 -
进行了一些修改,希望对您有所帮助