为什么我的WPF结束事件不会因系统关闭而被触发?

时间:2010-07-06 05:34:27

标签: wpf events exit

我在XAML文件的Window节中有以下行:

    Closing="Window_Closing"

我原本以为网页here向我保证,当您使用系统菜单中的big X关闭方法Alt-F4close时,此事件会触发似乎并非如此,因为Window_Closing()函数上的断点没有被击中。

当我执行FileExit退出方法时, 点击了断点,以便正常工作。

重新阅读该链接页面让我相信它可能不会触发结束事件。

我的问题是:

  1. 如何捕获列出的三种方法,以便检测文件是否脏,需要保存?我完成了所有'脏'和文件保存代码,我只需要知道如何捕获事件。

  2. 你能用这种方法阻止退出(你可以通过拦截结束事件)吗?换句话说,如果用户说他们不想退出,因为在错误的窗口上意外使用Alt-F4,可以这样做吗?

2 个答案:

答案 0 :(得分:2)

根据Closing事件的文档页面:

  

如果会话因用户登录而结束   关闭或关闭,关闭不是   提高;处理SessionEnding到   实现取消的代码   申请结束。

因此,您需要确保处理SessionEnding事件以及Closing事件。 SessionEnding事件可用于自动将当前状态保存到临时文件中,该文件将在下次应用程序启动时再次加载。但是如果你想提示用户,你可以在SessionEnding中使用模式对话框,但他们可能会看到警告无响应应用程序的Windows屏幕,让他们有机会终止进程而不响应你的对话框。 / p>

答案 1 :(得分:0)

尝试使用已结束的活动:Closed="Window_Closing"