如果我有MDIParent,我该如何创建全局变量?

时间:2013-01-10 12:30:07

标签: c# .net visual-studio-2010

我正在尝试开发一个我有MDIParent和几个MDIchilds的应用程序。我想在MDIParent上创建一个全局变量,我希望该变量可以从其子代中访问。

我该怎么做?

2 个答案:

答案 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的所有实例之间共享。如果这不是你的意思,那么它不是你想要的全局。