2011-08-11 7 views
-1

i
Hallo、
mdicontainerを使用しています。
1.私はどのように親から子に至ることができますか?
2.同じ名前のウィンドウを複数開くことはできますか?(つまり、自分のMenuStripにはOrdre、Tarif、Configがあります。ユーザーがOrdreを開いたときにmenustrip ordreを再度クリックすると、新しいウィンドウを開きません/新しい子供を作成しましたが、既に開いているordreウィンドウを指していましたか?)MDIContainer Pass変数と1つのウィンドウ

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"; 
    } 
} 

例では、我々は2つのフィールドのためにそれぞれ1を使用し、上記2つのクラス、MDI親にvarを格納するプロパティ、および変数の通信を行い、子の内部にコピーを格納するための子のメソッドです。

これは親から子へと便利ですが、親との間で同期をとるさまざまな方法で実装する必要があります。

+0

ご返信ありがとうございます。 私はコンストラクタ経由で渡します。 public Lordre() { InitializeComponent(); } public Lordre(string ClientID) { InitializeComponent(); lbl_Err.Text = "qdsf" + ClientID; }
Program.csに一般的な変数があるのだろうかと思います。それは私がそれを置くと、私はどんな形からでも価値を取り戻すことができます。 – user609511

+0

この目的のために、Program.csのグローバル変数の代わりに静的クラスを作成することができます。 – Rolice

関連する問題