我有一個簡單的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