如何從不同的WinForm(A)代碼關閉不同的WinForm(B)?如何從另一個WinForm的代碼中關閉不同的WinForm?
我已經擁有它設置了這樣的WinForm(B)在winform(A)的代碼被打開:
Form2 form2 = new Form2();
form2.ShowDialog();
如何從不同的WinForm(A)代碼關閉不同的WinForm(B)?如何從另一個WinForm的代碼中關閉不同的WinForm?
我已經擁有它設置了這樣的WinForm(B)在winform(A)的代碼被打開:
Form2 form2 = new Form2();
form2.ShowDialog();
您需要進行兩處更改您的代碼:
Show
而不是ShowDialog
,這樣第一個窗口仍然可以處理事件。下面是一些示例代碼:
Form2 form2;
private void button1_Click(object sender, EventArgs e)
{
form2 = new Form2();
form2.Show();
}
private void button2_Click(object sender, EventArgs e)
{
form2.Close();
}
您將需要添加一些邏輯,以確保您不能關閉窗體你已經打開了它面前,你不嘗試關閉一個你已經關閉的表單。
ShowDialog
將打開form2
作爲一個模態對話框,即程序執行不會繼續下去,直到form2
關閉(由用戶,或者在某些form2
的事件處理程序的。好像要打開form2
無模式, 。即致電Show
相反,你應該然後能夠在任何時候打電話form2.Close()
邊注意:形式與Show
打開會自動配置,一旦用戶關閉他們(在另一方面,模態形式,即以ShowDialog()
顯示的那些,必須手動爲Dispose
d)。也就是說,您可能需要手動關閉form2
。我認爲打電話Close
不會導致任何不愉快的事情發生,我認爲它只是第二次調用Dispose
。
如果您將「Show」方法應用於Winform,則該方法會繼續偵聽Windows消息,如WM_CLOSE。但是如果你使用「ShowDialog」,你的winform就會變成「聾子」。
只要寫form2.show(),和你的WinForm會做任何你想要:-)
當我使用展();我的form2凍結了。當使用ShowDialog時,我仍然能夠以我的第一種形式處理方法。我不確定發生了什麼,但我堅持使用它,因爲這就是目前的工作內容... – sooprise 2010-05-28 18:59:02