3

我添加了标准代码“您确定要退出吗?” this.Closing 我的主窗口事件中的消息。

它可以按预期从 gui 关闭,但是我想在应用程序通过关闭时禁用此检查Application.Shutdown()

在窗口关闭之前触发中没有事件,Application并且无法覆盖 Shutdown 方法。

如何检测导致关闭窗口的原因?

4

2 回答 2

1

免责声明:如果可以的话,我会把它作为评论而不是答案,因为它是一个肮脏的黑客(不是一个干净的黑客)。但是,如果您真的需要某些东西并且没有更好的解决方案出现,我无论如何都会发布它以希望对您有所帮助......

如果您绝对无法控制/挂钩调用应用程序关闭的代码库部分,那么可能会找到其他响应关闭的东西,您可以在窗口关闭之前触发它。

我(不太理想)的想法是设置另一个隐藏窗口(SO:加载 WPF 窗口而不显示它),用户不会与之交互,但应用程序将在关机时关闭。

在该窗口的关闭事件中,您可以设置一个标志来指示应用程序正在关闭。然后在主窗口的关闭事件中,您可以对该标志做出反应。

要解决的大问题是配置事物,以便隐藏窗口始终在主窗口之前安全关闭。

我使用 MainWindow.Xaml 作为应用程序 Startupuri 进行了一些有限的测试,并从 application.onstartup 事件创建隐藏窗口,发现隐藏窗口将首先关闭 - 但我不想在所有场景中保证这一点!实际上让这个工作和充分测试可能是很多工作 - 正如我所说的,这是最后一次恢复肮脏的黑客。

于 2012-08-03T05:08:49.190 回答
0

谁打电话Application.Shutdown()?如果您负责,只需设置一个标志,表明您已完成此操作,并在Closing事件处理程序中检查该标志。

于 2012-08-01T20:05:56.793 回答