我如何创建全局变量,如果我有一个MDIParent

本文关键字:如果 有一个 MDIParent 全局变量 创建 何创建 | 更新日期: 2023-09-27 17:51:10

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

我该怎么做??

我如何创建全局变量,如果我有一个MDIParent

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

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

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

那么就给MDIParent:

添加一个公共静态属性
public static int MyGlobalInt
{
    get
    {
        return 42;
    }
}

将被MDIParent的所有实例共享。如果这不是你想要的,那么它就不是你想要的全局变量。

相关文章: