MDIParent
といくつかのアプリケーションを開発しようとしていますMDIchilds
。にグローバル変数を作成し、MDIParent
その変数にその子からアクセスできるようにしたいと考えています。
どうやってやるの??
MDIParent
といくつかのアプリケーションを開発しようとしていますMDIchilds
。にグローバル変数を作成し、MDIParent
その変数にその子からアクセスできるようにしたいと考えています。
どうやってやるの??
マシュー・ワトソンの答えがあなたの求めているものではない場合...
特定の 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# のグローバル変数は、事実上静的フィールドまたはプロパティです。
したがって、public static プロパティを MDIParent に追加するだけです。
public static int MyGlobalInt
{
get
{
return 42;
}
}
これは、MDIParent のすべてのインスタンス間で共有されます。それが意図したものではない場合、それはあなたが望むグローバルではありません。