1

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

我怎样才能做到这一点??

4

2 回答 2

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;
    }
}

快速说明:通常最好尽可能避免使用“全局”变量(即静态字段/属性)。将程序状态的所有不同部分限制在适当的上下文中以减少耦合。见得墨忒耳法则

于 2013-01-10T12:41:51.083 回答
2

C# 中的全局变量实际上是一个静态字段或属性。

所以只需向 MDIParent 添加一个公共静态属性:

public static int MyGlobalInt
{
    get
    {
        return 42;
    }
}

这将在 MDIParent 的所有实例之间共享。如果这不是你的意思,那么它不是你想要的全局。

于 2013-01-10T12:35:27.257 回答