C# 我可以使用我的表单作为静态的吗?
我的程序有多种形式。这些表单中的一些表单将从能够相互对话中受益匪浅,但是如果Form1创建Form2的实例,Form2就不能调用Form1,至少不是很容易 让我的表单成为静态的,这样它们就可以互相对话,而不需要在任何地方实例化这些类的对象,这可以接受吗 然而,如果Form1创建了Form2的实例,Form2就不能调用Form1,至少不是很容易 是的,它可以-只需让您的C# 我可以使用我的表单作为静态的吗?,c#,forms,object,static,C#,Forms,Object,Static,我的程序有多种形式。这些表单中的一些表单将从能够相互对话中受益匪浅,但是如果Form1创建Form2的实例,Form2就不能调用Form1,至少不是很容易 让我的表单成为静态的,这样它们就可以互相对话,而不需要在任何地方实例化这些类的对象,这可以接受吗 然而,如果Form1创建了Form2的实例,Form2就不能调用Form1,至少不是很容易 是的,它可以-只需让您的Form2实例了解Form1的实例,例如通过构造函数: // In Form1 Form2 form2 = new Form1(t
Form2
实例了解Form1
的实例,例如通过构造函数:
// In Form1
Form2 form2 = new Form1(this);
(请注意,如果您的类真的被称为Form1
和Form2
,那么为它们提供更具语义意义的名称是值得的。拒绝使用Visual Studio提供的任何名称:)
我强烈建议不要仅仅为了避免直接提供依赖性而使用静态
然而,如果Form1创建了Form2的实例,Form2就不能调用Form1,至少不是很容易
是的,它可以-只需让您的Form2
实例了解Form1
的实例,例如通过构造函数:
// In Form1
Form2 form2 = new Form1(this);
(请注意,如果您的类真的被称为Form1
和Form2
,那么为它们提供更具语义意义的名称是值得的。拒绝使用Visual Studio提供的任何名称:)
我强烈建议不要仅仅为了避免直接提供依赖关系而使用static。我从未创建过静态表单。。通常我只是为我的表单实例创建一些全局变量
只要在.Show(表单)或.ShowDialog(表单)方法中传递调用表单,您也可以通过当前表单的.Parent属性访问其他表单。我从未创建过静态表单。。通常我只是为我的表单实例创建一些全局变量
只要在.Show(表单)或.ShowDialog(表单)方法中传递调用表单,您也可以通过当前表单的.Parent属性访问其他表单。更改表单2的构造函数,如下所示
public Form2(Form form1)
{
_parentForm = form1;
}
您现在有了对form1的引用。更改Form2的构造函数,如下所示
public Form2(Form form1)
{
_parentForm = form1;
}
您现在有了对form1的引用。@KarmicCoder:同意,使用静态/单例会带来很多线程安全问题。“回调”很容易在没有引用的情况下完成。使用事件。感谢您的回答。Karmic Coder,不过我希望得到更长一点的答案。@KarmicCoder:同意,使用静态/单例会带来很多线程安全问题。“回调”很容易实现,无需参考。使用一个事件。感谢你的答案,业力编码员,不过我希望答案能长一点。有好的信息。这些表格并没有命名为Form1和Form2,这是为了举例。我将努力使用所提到的建设者来实现我所需要的。良好的信息。这些表格并没有命名为Form1和Form2,这是为了举例。我将努力使用前面提到的构造函数来实现我所需要的。