Form1 {
public int VAR;
public int PRTY_VAR
{
get { return VAR; } set { VAR= value; }
}
}
Form2
{
private void trackBar2_Scroll(object sender, EventArgs e)
{
// here, cant access property "PRTY_VAR"
Form1.PRTY_VAR= 1 + trackBar2.Value;
}
}
无法从form2访问PRTY_VAR。我需要改变VAR而不需要deaclaring
Form2中的 MainForm mf = new MainForm;
,
因为声明它不会改变MainForm上的变量。 它只更改新创建的MainForm实例的变量。(这不是真正的MainForm。)
感谢。
编辑:shoud我玩Application.Run(new Form1());在program.cs中公开
答案 0 :(得分:3)
两个选项:
MainForm
的引用传递给Form2
并从那里访问它。MainForm
上将属性设为静态。我更喜欢选项1 ,因为我不喜欢让静态属性浮动,让任何人都可以改变。它还可能引入尴尬的线程问题。但听起来选项2 更接近您所寻找的目标。
答案 1 :(得分:1)
打开Form2
时,会将您当前的表单实例传递给您:
Form2 f2 = new Form2();
f2.open(this);
然后,您可以从Form2:
// Owner represents your main form, we are making cast to access PRTY_VAR property
((Main_Form)Owner).PRTY_VAR= 1 + trackBar2.Value;