我的程序有多个表单。这些表单中的一些将从能够相互通信中受益良多,然而,如果Form1创建Form2的实例,Form2就不能回调Form1,至少不是很容易。
让我的窗体成为静态的,这样它们就可以相互通信,而不需要在任何地方实例化这些类的对象,这是可以接受的吗?
发布于 2012-01-05 06:35:36
但是,如果Form1创建了一个Form2实例,Form2就不能回调Form1,至少不能很容易地回调
是的,它可以--只要让你的Form2实例知道Form1的实例,比如通过一个构造函数:
// In Form1
Form2 form2 = new Form1(this);(请注意,如果您的类真的称为Form1和Form2,则值得为它们指定更有语义意义的名称。拒绝坚持使用Visual Studio给你的任何东西的诱惑:)
我强烈建议不要仅仅为了避免直接提供依赖项而使用statics。
发布于 2012-01-05 06:35:48
我从来没有创建过静态表单..通常我只是为我的表单实例创建一些全局变量...
也可以通过当前窗体的.Parent属性访问其他窗体,只要在.Show( form )或.ShowDialog(form)方法中传递调用窗体即可。
发布于 2012-01-05 06:36:58
按如下方式更改Form2的构造函数
public Form2(Form form1)
{
_parentForm = form1;
}现在,您有了对form1的引用。
https://stackoverflow.com/questions/8735059
复制相似问题