2013-05-18 80 views
0

我有三種窗體,Form1,Form2,Form3。 Form1中的一個按鈕可以打開Form3,而Form2中的一個按鈕也可以打開Form3。 當任一按鈕被按下時,相應的窗體被隱藏,Form3被打開。 當Form3關閉時,它應該打開隱藏的表單。查找父窗體

我該怎麼做呢?

+0

如果你想保持它像你的問題一樣簡單,你可以在FormClosing事件中用gzaxx的答案來處理它。 雖然說你的軟件可能正在增長,或者你想要一個菜單​​欄或一個側邊欄,你應該仔細看看MDI(多文檔界面)。 –

回答

3

Form.Show方法可以採取OwnerForm作爲參數,所以調用它像:

private void FormIsClosing(object sender, FormClosingEventArgs e) 
{ 
    var owner = this.Owner; 

    if (owner != null) 
    { 
     owner.Show(); 
    } 
} 
+0

非常感謝! – Pindo

0

另一種方法是使用:

var frm = new Form3(); 
frm.Show(this); 

您可以在Form3地產Owner所以在關閉事件訪問父激活和FormClosed事件。

讓我們在Form1中說你Click一個按鈕來顯示窗體2

private void button1_Click(object sender, EventArgs e) 
{ 
    Form2 frm2 = new Form2(); 
    frm2.Activated += new EventHandler(frm2_Activated); 
    frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed); 
    frm2.Show(); 
} 

現在,這個人是當窗體2顯示或激活隱藏主叫形式,在這種情況下,在Form1

private void frm2_Activated(object sender, EventArgs e) 
    { 
     this.Hide(); // Hides Form1 but it is till in Memory 
    } 

這個當被調用表單在這種情況下關閉Form2時,它會再次顯示隱藏的Form1。

private void frm2_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     this.Show(); // Show hidden Form1 
    }