1

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

如果用户结束使用 Window 并单击 Accept 我想关闭它,但如果我 make this.Close();,这将触发Closing事件并关闭整个 App。

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

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

4

1 回答 1

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)。我认为这是正确的。

于 2013-09-13T13:54:03.073 回答