我想開發一個應用程序,我有一個MDIParent
和幾個MDIchilds
。我想在我的MDIParent
上創建一個全局變量,我希望該變量可以從其子項訪問。如果我有MDIParent,我該如何創建全局變量?
我該怎麼做?
我想開發一個應用程序,我有一個MDIParent
和幾個MDIchilds
。我想在我的MDIParent
上創建一個全局變量,我希望該變量可以從其子項訪問。如果我有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;
}
}
快速注意:這是一般最好避免使用「全局」變量(即靜態字段/屬性)儘可能多地。將程序狀態的所有不同部分限制在適當的上下文中以減少耦合。請參閱Law of Demeter。
C#中的全局變量實際上是一個靜態字段或屬性。
所以只是一個公共靜態屬性添加到的MdiParent:
public static int MyGlobalInt
{
get
{
return 42;
}
}
這將的MdiParent的所有實例之間共享。如果這不是你的意思,那麼它不是你想要的全球。
你是對的,但如果我把它作爲靜態的,它不是全局的。 – Sonhja
我認爲將正確的設置引用常見的數據對象轉換爲MDIChilds構造函數 – Frank59