管理标题关闭按钮在WPF中单击

时间:2013-09-13 13:40:28

标签: c# wpf

我有一个窗口,如果用户按下红色X(关闭)按钮,我想关闭应用程序。为此,我处理 Closing 事件并制作Environment.Exit(0);

如果用户结束使用Window并单击“接受”我想关闭它,但如果我发出this.Close();,则会触发 Closing 事件并关闭整个App。

我尝试使用调试器检查事件的 sender 参数,但在两种情况下都是Window对象。有没有办法检查事件触发器的源元素?

我可以使用一个标志,当用户单击“接受”时将其设置为true,并且当它为真时不要使Environment.Exit(0);,但我不认为这是一个干净的解决方案。

1 个答案:

答案 0 :(得分:3)

当试图关闭窗口时调用OnClosing触发器。您可以根据您的条件(旗帜或确认框)取消它

// exemple with flag
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    if (this.allowedToClose == false)
    {
        // this window will not close
        e.Cancel = true;
    }
    else if (this.appMustClose == true)
    {
        // close the app
        Application.Current.Shutdown();
    }
}

将e.Cancel设置为true以取消关闭。让它为假,窗户将关闭。您不需要使用Environment.Exit,除非窗口不是主窗口。

您可以使用Application.Current.Shutdown()而不是Environment.Exit(0)。我认为这是正确的。