2010-09-30 15 views
0

當我運行我的應用程序時,2個不同的表單被同時加載,但其中一個被顯示。現在我想要如果其中一個表單被關閉,其他隱藏的表單也應該關閉。任何建議。 沒有父 - 這些形式之間的親子關係。如何關閉內存中加載的兩個表單,當其中一個表單關閉時?

+0

它們是從相同的過程還是兩個不同的程序啓動的? – keyboardP 2010-09-30 15:22:54

+0

@keyboardP,來自同一應用程序的兩種不同的表單被加載並可互換使用。 – Muse 2010-09-30 15:31:50

回答

0

假設這兩個表單都在同一個進程中,您可以讓第二個隱藏窗體處理可見窗體的FormClosed事件,並在可見窗體的FormClosed事件觸發時自行關閉它。

public partial class Form1 : Form 
    { 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     // The following does not need to happen in the Load of this form 

     // Create hidden Form 
     Form2 frm = new Form2(); 

     // Attach hidden form to this form 
     frm.AttachTo(this); 
    } 
    } 

    public class Form2 : Form 
    { 
    public void AttachTo(Form frmMain) 
    {  
     frmMain.FormClosed += new FormClosedEventHandler(frmMain_FormClosed); 
    } 

    void frmMain_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     this.Close(); 
    } 
    } 
0

我打算假設這是一個參考這兩種形式的應用程序。如果情況並非如此,請告訴我。

鑑於這種假設,您有以下(僞代碼所示):

MyApplication 
{ 
    Form form1; 
    Form form2; 
} 

每個窗體的關閉事件可以關閉其他形式,如果它是不是已經關閉:

Form1_Close() 
{ 
    if(form2 != null) 
    { 
     form2.Close(); 
     form2 = null; 
    } 
} 

然後:

Form2_Close() 
{ 
    if(form1 != null) 
    { 
     form1.Close(); 
     form1 = null; 
    } 
} 

這是否符合您的要求?