2011-11-14 54 views
1

在一個項目中我的工作內容模糊,我有日期的組合框計算依賴於應用程序中的其他地方的某些其他條件的人員的年齡。消息框彈出組合框後面的下拉列表中,在MessageBox中

如果用戶選擇的日期,我們就彈出來,我們由於這種改變窗體上的幾件事情的用戶的通知。

messagebox behind dropdown list

正如你可以在圖片中看到,組合框的項目結束了對這些URL的頂部仍然停留在它彈出。用戶仍然可以單擊確定,並可以移動框,但這是向用戶顯示信息的一種奇怪方式。

有沒有辦法將彈出消息框,上面這個列表,或隱藏列表中的消息框出現過嗎?我嘗試設置IsDropDownOpen,但這不起作用。

更新:MessageBox.Show事件發生在選擇改變,這就是爲什麼我認爲它還沒有關閉下拉菜單。但是怎麼能解決這個問題呢?

更新2:代碼我現在有是這樣的。 ComboBox使用'LostFocus'事件(來處理鍵入和/或選擇)來調用CheckDOB方法。 CheckDOB是我然後顯示在MessageBox

+0

你彈出的SelectionChanged事件的消息框? 你可以添加一些代碼嗎? – MichaelS

+0

是的,我喜歡,謝謝。將這個問題添加到這個問題上。 – jmlumpkin

回答

2

嗯,我不能reprodouce您的問題,但我相信,使用Dispatcher可以提供幫助。

試試這個:

VB.NET

Private Sub ComboBox_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs) 
     'Do what you need.. 
     Me.Dispatcher.BeginInvoke(Sub() 
             MessageBox.Show("Message", "Caption", MessageBoxButton.OK, MessageBoxImage.Information) 
            End Sub) 
    End Sub 

C#

private void ComboBox_SelectionChanged(System.Object sender, System.Windows.Controls.SelectionChangedEventArgs e) 
{ 
    //Do what you need.. 
    Dispatcher.BeginInvoke(new ThreadStart(() => 
    { 

     MessageBox.Show("Message", "Caption", MessageBoxButton.OK, MessageBoxImage.Information); 

     })); 
} 
+0

我得到一個'不能轉換lambda表達式來鍵入'System.Delegate',因爲它不是一個委託類型錯誤時嘗試C#版本。 – jmlumpkin

+0

@jmlumpkin:對不起,我發佈了一個新的工作代碼。 – MichaelS

+0

謝謝,按預期工作! – jmlumpkin