又是一个看起来很简单的问题。像下面这样在Closing里弹出个MessageBox确认一下不就行了?
public static void OnWindowClosing(object sender, CancelEventArgs e) { if (MessageBox.Show(string.Format("Are you sure to close the {0}?", (sender as Window).Title), "Confirm", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No) { e.Cancel = true; } }
代码简单得不能再简单了,而且试了一下可以达到目的,似乎是没有什么问题啊。但是很多代码需要大量的测试才能发现问题。这个代码就是其中之一。
在说明BUG之前,先给几个信息,大家可以猜猜如何重现这个问题。
1.只有非模态的子窗体有这个BUG。主窗口是没有问题的。
2.弹出MessageBox的时候,UI消息处理线程会被阻塞。
3.抛出的异常,是InvalidOperationException。
4.子窗体与主窗体有从属关系,主窗体最小化时,子窗体也跟着最小化。
5.最后一个信息,已经是把BUG告诉大家了。就是Error Message,如下图所示。
图1. Exception信息
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索非模态对话框
, 问题
, 窗体
, 代码
, 简单
, 最小化问题
, messagebox
, wpf弹出窗口
, 关闭窗体
, 模态框
, wpf消息框
, 模态框遮挡
, 模态
H5注册模态框
,以便于您获取更多的相关知识。