访问类似MainForm.property的变量,而无需实例化MainForm mf = new MainForm;

时间:2014-01-15 16:43:09

标签: c#

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中公开

2 个答案:

答案 0 :(得分:3)

两个选项:

  1. MainForm的引用传递给Form2并从那里访问它。
  2. MainForm上将属性设为静态。
  3. 我更喜欢选项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;