在 WPF 中管理标题“关闭”按钮的单击
本文关键字:按钮 单击 关闭 WPF 管理 标题 | 更新日期: 2023-09-27 18:31:08
我有一个窗口,如果用户按下红色的X(关闭)按钮,我想关闭应用程序。为此,我处理关闭事件并Environment.Exit(0);
如果用户结束使用窗口并单击"接受",我想关闭它,但如果我this.Close();
,这将触发 Closed 事件并关闭整个应用。
我尝试使用调试器检查事件的发送方参数,但在这两种情况下它都是 Window 对象。有没有办法检查事件触发器的源元素?
我可以使用一个标志,在用户单击"接受"时将其设置为 true,并且在 true 时不进行Environment.Exit(0);
,但我认为这不是一个干净的解决方案。
OnClose触发器是在尝试关闭窗口时调用的。您可以使用您的条件(标志或确认框)取消它
// 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.取消设置为 true 以取消关闭。让它为假,窗户将关闭。您不需要使用 Environment.Exit,除非该窗口不是主窗口。
您可以使用 Application.Current.Shutdown() 代替 Environment.Exit(0)。我认为这是正确的。