2011-08-11 36 views
-1

i
Hallo,
m使用MDIContainer。
1.我怎样才能将变化从父母传递给孩子?
2.如何禁止以相同的名称打开多个窗口(这意味着在我的MenuStrip中有Ordre,Tarif,Config ...当用户已经打开Ordre时,当他再次点击菜单栏时,它不打开一个新窗口/创建一个新的孩子,但指向已打开的ordre窗口)?MDIContainer通过变量和一个窗口

Thanx before。

回答

2

在mdicontainer窗口创建一个私有,保护或公共成员:

class MyMdiContainer : Form 
{ 
    private object m_var; 

    // Property approach 
    public object MyVar 
    { 
     get { return m_var; } 
     set { m_var = value; } 
    } 
} 

这里是MDI子:

class MyMdiChild : Form 
{ 
    private object m_childVar; 

    void Communicate() 
    { 
     // Read variable 
     this.m_childVar = ((MyMdiContainer) this.MDIParent).MyVar; 

     ((MyMdiContainer) this.MDIParent).MyVar = "Child Foo"; 
    } 
} 

在上面的例子中,我们使用两个领域,分别为两个类,用于将变量存储在MDI父级中的属性,以及用于在变量上进行通信并在子内部存储副本的子方法。

这对于父母对孩子很有用,但是它应该以不同的方式用于许多具有同步的孩子的父母。

+0

请求您回复。 我使用通过构造函数传递。 public Lordre() { InitializeComponent(); } public Lordre(string ClientID) { InitializeComponent(); lbl_Err.Text =“qdsf”+ ClientID; }
我想知道Program.cs中是否有一个通用变量。这意味着一旦我把它,我可以从任何形式回收价值。 – user609511

+0

您可以为此创建一个静态类,而不是Program.cs中的全局变量。 – Rolice