我的程序有多种形式。其中一些形式可以从彼此交谈中获益很多,但是如果Form1创建Form2的实例,Form2无法回调到Form1,至少不是很容易。
是否可以将表单设置为静态,以便它们可以相互通信而无需在任何地方实例化这些类的对象?
答案 0 :(得分:3)
但是如果Form1创建了Form2的实例,则Form2无法回调Form1,至少不是很容易
是的,可以 - 让您的Form2
实例了解Form1
的实例,例如通过构造函数:
// In Form1
Form2 form2 = new Form1(this);
(请注意,如果您的类真的称为Form1
和Form2
,那么为它们提供更具语义意义的名称是值得的。拒绝坚持使用Visual Studio为您提供:)
我强烈建议使用静态反对,以避免直接提供您的权限。
答案 1 :(得分:0)
我从来没有创建静态表单..通常我只为表单实例创建一些全局变量......
只要您在.Show(form)或.ShowDialog(form)方法中传递调用表单,您也可以通过当前表单的.Parent属性访问其他表单。
答案 2 :(得分:0)
更改表格2的构造函数,如下所示
public Form2(Form form1)
{
_parentForm = form1;
}
您现在可以参考form1。