1

MDIParentといくつかのアプリケーションを開発しようとしていますMDIchilds。にグローバル変数を作成し、MDIParentその変数にその子からアクセスできるようにしたいと考えています。

どうやってやるの??

4

2 に答える 2

4

マシュー・ワトソンの答えがあなたの求めているものではない場合...

特定の 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# のグローバル変数は、事実上静的フィールドまたはプロパティです。

したがって、public static プロパティを MDIParent に追加するだけです。

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

これは、MDIParent のすべてのインスタンス間で共有されます。それが意図したものではない場合、それはあなたが望むグローバルではありません。

于 2013-01-10T12:35:27.257 に答える