我正在尝试开发一个我有MDIParent
和几个MDIchilds
的应用程序。我想在MDIParent
上创建一个全局变量,我希望该变量可以从其子代中访问。
我该怎么做?
答案 0 :(得分:4)
如果Matthew Watson的答案不是你所追求的......
如果您只想让特定MDI父窗体的子窗口可以访问“全局”变量,那么只需在其上使用常规实例属性即可。孩子们可以通过child.MdiParent.MyVariable
(将MdiParent
转换为适当的类型后)访问它。例如:
class ParentForm
{
public int MyVariable
{
return 1;
}
}
class ChildForm
{
public void MyMethod()
{
var parent = this.MdiParent as ParentForm;
foo = parent.MyVariable;
}
}
快速说明:通常最好尽量避免使用“全局”变量(即静态字段/属性)。将程序状态的所有不同部分限制在适当的上下文中以减少耦合。请参阅Law of Demeter。
答案 1 :(得分:2)
C#中的全局变量实际上是一个静态字段或属性。
所以只需将公共静态属性添加到MDIParent:
public static int MyGlobalInt
{
get
{
return 42;
}
}
将在MDIParent的所有实例之间共享。如果这不是你的意思,那么它不是你想要的全局。