2010-08-01 107 views

回答

10

您應該使用的兩個事件是FormClosingFormClosed

在.Net Framework verion 2.0中,這些事件取代了過時的ClosingClosed事件。

新事件發生的原因是當Application.Exit方法被調用時,舊事件並未發生。

FormClosing事件的用法下面是一個例子:

public Form1() 
{ 
    InitializeComponent(); 
    this.FormClosing += Form1_FormClosing; 
} 

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    DialogResult result = MessageBox.Show("Really close this form?", string.Empty, MessageBoxButtons.YesNo); 

    if (result == DialogResult.No) 
    { 
     e.Cancel = true; 
    } 
} 

該代碼簡單地詢問用戶是否要關閉表單,如果選擇否,它然後取消該事件。您可以在事件處理程序中放入您需要的任何邏輯。


Form.Closing MSDN文章是here,包括爲什麼該事件是過時的引用。 Form.FormClosing的參考是here

+0

酷!我很確定有這樣簡單的事情。 謝謝! – SDGator 2010-08-01 20:37:48

0

只需在FormClosed事件中註冊處理程序。

+0

窗體已關閉後,是不是「FormClosed」事件太晚?你需要「FormClosing」來代替,我相信 – 2010-08-01 07:45:50

+1

沒有什麼問題表明'FormClosing'會比FormClosed更需要。但我確實承認我的答案是不完整的,因爲沒有提到第二個事件,就像其他答案一樣。 – jdmichal 2010-08-01 15:24:09

3

你的窗口類出版爲此,兩個事件:

Closing允許您取消關閉,如果它是不恰當的

Closed允許你在接近反應。