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

SDG*_*tor 1 .net c# visual-studio-2010

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

Dav*_*all 10

你应该使用的两个事件是FormClosingFormClosed.

在.NET Framework 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

该代码只是询问用户是否要关闭表单,如果选择"否",则取消该事件.您可以在事件处理程序中放置所需的任何逻辑.


MSDN上的文章就Form.Closing这里,其中包含有关事件过时的原因的参考资料.参考Form.FormClosing在这里