2010-05-28 57 views

回答

5

您需要進行兩處更改您的代碼:

  • 使用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(); 
} 

您將需要添加一些邏輯,以確保您不能關閉窗體你已經打開了它面前,你不嘗試關閉一個你已經關閉的表單。

+0

當我使用展();我的form2凍結了。當使用ShowDialog時,我仍然能夠以我的第一種形式處理方法。我不確定發生了什麼,但我堅持使用它,因爲這就是目前的工作內容... – sooprise 2010-05-28 18:59:02

0

ShowDialog將打開form2作爲一個模態對話框,即程序執行不會繼續下去,直到form2關閉(由用戶,或者在某些form2的事件處理程序的。好像要打開form2無模式, 。即致電Show相反,你應該然後能夠在任何時候打電話form2.Close()

邊注意:形式與Show打開會自動配置,一旦用戶關閉他們(在另一方面,模態形式,即以ShowDialog()顯示的那些,必須手動爲Dispose d)。也就是說,您可能需要手動關閉form2。我認爲打電話Close不會導致任何不愉快的事情發生,我認爲它只是第二次調用Dispose

0

如果您將「Show」方法應用於Winform,則該方法會繼續偵聽Windows消息,如WM_CLOSE。但是如果你使用「ShowDialog」,你的winform就會變成「聾子」。

只要寫form2.show(),和你的WinForm會做任何你想要:-)