验证关闭方法和 Windows 关闭按钮 C#

Validating Close method and Windows Close button C#

我有一个类似 MainPage_FormClosing(object sender, FormClosingEventArgs e) 的方法,我正在使用 Close 方法关闭表单。 此 this.Close() 方法还会触发 MainPage_FormClosing 方法。

我只想在用户单击表单 Windows 关闭 按钮 时执行一些特定功能。

我在这里看到了一些其他的问题,他们使用了类似String.Equals((sender as Button).Name, @"CloseButton")的方式来验证。 发件人对我来说总是空的

我如何验证这一点?

如果您不能使用 e.CloseReason,最简单的解决方案是使用一个标志 - 拥有一个表单级布尔变量,它只会在您在代码中和在窗体关闭事件处理程序。这样的事情会做:

private bool _isClosedFromCode = false;

...

private void CloseForm()
{ 
    _isClosedFromCode = true;
    Close();
}

...

private void MainPage_FormClosing(object sender, FormClosingEventArgs e)
{
    if(_isClosedFromCode)
    {
        // do your stuff here
    }

   _isClosedFromCode = false; 
}