我有三種窗體,Form1,Form2,Form3。 Form1中的一個按鈕可以打開Form3,而Form2中的一個按鈕也可以打開Form3。 當任一按鈕被按下時,相應的窗體被隱藏,Form3被打開。 當Form3關閉時,它應該打開隱藏的表單。查找父窗體
我該怎麼做呢?
我有三種窗體,Form1,Form2,Form3。 Form1中的一個按鈕可以打開Form3,而Form2中的一個按鈕也可以打開Form3。 當任一按鈕被按下時,相應的窗體被隱藏,Form3被打開。 當Form3關閉時,它應該打開隱藏的表單。查找父窗體
我該怎麼做呢?
Form.Show
方法可以採取OwnerForm
作爲參數,所以調用它像:
private void FormIsClosing(object sender, FormClosingEventArgs e)
{
var owner = this.Owner;
if (owner != null)
{
owner.Show();
}
}
非常感謝! – Pindo
另一種方法是使用:
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
}
如果你想保持它像你的問題一樣簡單,你可以在FormClosing事件中用gzaxx的答案來處理它。 雖然說你的軟件可能正在增長,或者你想要一個菜單欄或一個側邊欄,你應該仔細看看MDI(多文檔界面)。 –