MessageBox появляется за выпадающим списком ComboBox, скрывая содержимое в MessageBox - PullRequest
1 голос
/ 14 ноября 2011

В проекте, над которым я работаю, у меня есть ComboBox с датами, который вычисляет возраст людей в зависимости от определенных других критериев в другом месте приложения.

Если пользователь выбирает дату, мы выскакиваем уведомление о том, что мы изменили несколько вещей в форме из-за этого.

messagebox behind dropdown list

Как вы можете видеть на картинке, элементы комбинированного списка остаются в верхней части окна сообщения, когда оно появляется. Пользователь по-прежнему может нажимать кнопку ОК и может перемещать поле, но это странный способ предоставления информации пользователю.

Есть ли способ открыть окно сообщения над этим списком или скрыть список до того, как появится окно сообщения? Я попытался установить IsDropDownOpen, но это не работает.

Обновление : Событие MessageBox.Show происходит в измененном выделении, поэтому я решил, что оно еще не закрыло раскрывающийся список. Как можно обойти это, хотя?

Обновление 2 : код, который у меня сейчас есть, выглядит следующим образом. ComboBox использует событие 'LostFocus' (для обработки ввода и / или выбора) для вызова метода CheckDOB. CheckDOB - то, где я тогда показываю MessageBox

1 Ответ

2 голосов
/ 14 ноября 2011

Ну, я не могу воспроизвести вашу проблему, но я считаю, что использование 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); 

      }));
}
...