我有一个简单的WPF窗体与文本框和按钮,失去焦点它只是简单地显示一个消息框。 我的代码看起来像这样WPF窗体和Windows消息传递的模态对话框
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Lost Focus 1");
Dispatcher.BeginInvoke(new Action(() =>
{
//Uncomment below lines to get button click
//Thread.Sleep(100);
//System.Windows.Forms.Application.DoEvents();
MessageBox.Show("Lost focus");
}
));
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Button_Click");
}
如果我的文本框具有焦点,当我点击按钮,然后如果显示的消息框按钮点击不解雇,但如果我之前调用Application.DoEvents()我显示消息框,然后我按钮点击被解雇。
我的实际应用程序有点复杂,但我试图用一个简单的文本框和一个按钮来模拟这种行为。在实际的应用程序之一,我的后台工作线程发布调度器上显示模式消息框(或甚至WPF形式)和队列中的任何用户界面挂起的消息似乎由messagebox处理(我怀疑),例如,如果我点击画布控制在理想情况下,我得到“鼠标按下”和“鼠标释放”但如果莫代尔消息框,这2个消息之间进来,然后我只得到“鼠标按下”和“鼠标“”消息丢失。
注意:我没有看到这种行为没有看到非模态对话框的情况下。
另外就我个人而言,如果有人能指出我关于窗体窗体如何处理窗口消息泵的好的文章的情况下模态对话框和非模态对话框将有所帮助。
我会尝试处理ReportProgess中的消息框。没有承诺它会解决它,但是我会尝试。 – Paparazzi
它具有相同的效果,问题是模态对话框获取Windows消息 – Ankit