2010-08-01 74 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允许你在接近反应。