我可以将表单用作静态吗?

时间:2012-01-04 22:32:28

标签: c# forms object static

我的程序有多种形式。其中一些形式可以从彼此交谈中获益很多,但是如果Form1创建Form2的实例,Form2无法回调到Form1,至少不是很容易。

是否可以将表单设置为静态,以便它们可以相互通信而无需在任何地方实例化这些类的对象?

3 个答案:

答案 0 :(得分:3)

  

但是如果Form1创建了Form2的实例,则Form2无法回调Form1,至少不是很容易

是的,可以 - 让您的Form2实例了解Form1的实例,例如通过构造函数:

// In Form1
Form2 form2 = new Form1(this);

(请注意,如果您的类真的称为Form1Form2,那么为它们提供更具语义意义的名称是值得的。拒绝坚持使用Visual Studio为您提供:)

我强烈建议使用静态反对,以避免直接提供您的权限。

答案 1 :(得分:0)

我从来没有创建静态表单..通常我只为表单实例创建一些全局变量......

只要您在.Show(form)或.ShowDialog(form)方法中传递调用表单,您也可以通过当前表单的.Parent属性访问其他表单。

答案 2 :(得分:0)

更改表格2的构造函数,如下所示

public Form2(Form form1)
{
   _parentForm = form1;
}

您现在可以参考form1。