2011-11-14 16 views
1

の内容を不明瞭に、ドロップダウンリストコンボボックスの後ろにポップアップし、私は他の場所でアプリケーション内の特定の他の基準に応じて、人物の年齢を計算日付のコンボボックスがあります。メッセージボックスは、私が働いているプロジェクトでは、メッセージボックス

ユーザーが日付を選択した場合、我々はこのによるフォーム上のいくつかのことを変更したユーザーに通知をポップアップ表示。

messagebox behind dropdown list

あなたが写真で見ることができるように、コンボボックスのアイテムは、それがポップアップしたときにまだメッセージボックスの上に滞在してしまいます。ユーザーはOKをクリックしてボックスを移動できますが、これはユーザーに情報を提示する奇妙な方法です。

メッセージボックスが起動する前に、リストを、このリストの上にメッセージボックスをポップアップ表示、または非表示にする方法はありますか?私はIsDropDownOpenを設定しようとしましたが、動作しません。

更新:MessageBox.Showイベントは、選択が変更されたときに発生します。そのため、まだドロップダウンを閉じていないとわかったのはなぜですか。どのようにこれを回避することができますか?

アップデート2:コードは、私が現在持っている。このように書きます。 ComboBoxはCheckDOBメソッドを呼び出すための 'LostFocus'イベント(入力および/または選択を処理するために)を使用します。私はその後、

+0

あなたはSelectionChangedイベントでメッセージボックスを開くのですか? コードを追加できますか? – MichaelS

+0

はい、ありがとうございます。そのビットを質問に追加します。 – jmlumpkin

答えて

2

まあ、私はあなたの問題をreprodouceことはできませんが、私は、ディスパッチャを使用して助けることができると信じているメッセージボックスを表示する場所CheckDOBです。

これを試してみてください:

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

C#バージョンを試しているときに、 '代理人型ではないため、' System.Delegate 'という型のラムダ式を変換できません。 – jmlumpkin

+0

@jmlumpkin:申し訳ありませんが、私は新しい作業コードを掲示しました。 – MichaelS

+0

ありがとう、それは期待どおりに働いた! – jmlumpkin

関連する問題