有没有办法让关闭窗口按钮(X)在实际关闭窗口之前调用方法?

时间:2010-08-01 03:46:19

标签: c# .net visual-studio-2010

在C#/。net / Visual Studio 2010的Windows窗体项目中,如果有人点击关闭窗口按钮,我想在程序中禁用其他一些内容。是否有方法调用我可以扩展的“X”?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

您的窗口类为此目的发布了两个事件:

Closing允许您取消关闭,如果不合适

Closed允许您在关闭时作出反应。

答案 2 :(得分:0)

只需在FormClosed事件上注册处理程序。