当我的程序关闭时(由Application.Shutdown()启动),我在主窗口上捕获Closing事件。在处理程序中,我创建了一个对话框,询问用户是否要保存他们的工作。在这种特定情况下,用户无法取消应用程序关闭事件,这对我来说没问题。
我发现,如果我发起"想要保存"通过ShowDialog的窗口,窗口永远不会显示。但是,MessageBox.Show确实显示了一个窗口。应用程序关闭期间这是预期的行为吗我无法在文档中找到有关此行为的任何内容。如果有人能够指出相关文档或这个问题的详细答案,那就太棒了。
答案 0 :(得分:4)
Application.Shutdown最终会停止应用程序的消息循环(Dispatcher)。之后什么都不会发生UI。 MessageBox.Show工作的唯一原因是因为它在应用程序的活动窗口上创建了自己的内部消息循环。
答案 1 :(得分:0)
如果您使用允许使用的Application.Current.MainWindow.Close();
e.Cancel = true;
,之后如果您使用Application.Current.Shutdown();
,它将忽略取消标记并关闭窗口。
这假设您只使用一个窗口,当然不需要再显示您的提示。
类似的东西:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
DisplayCloseConfirmation();
}
根据评论
进行编辑