MessageBox появляется за выпадающим списком ComboBox, скрывая содержимое в MessageBox
В проекте, над которым я работаю, у меня есть ComboBox с датами, который вычисляет возраст людей в зависимости от некоторых других критериев в другом месте приложения.
Если пользователь выбирает дату, мы выскакиваем уведомление о том, что мы изменили несколько вещей в форме из-за этого.
Как вы можете видеть на картинке, элементы комбинированного списка остаются в верхней части окна сообщения, когда оно появляется. Пользователь по-прежнему может нажимать кнопку ОК и может перемещать поле, но это странный способ представления информации пользователю.
Есть ли способ открыть окно сообщения над этим списком или скрыть список до того, как появится окно сообщения? Я попытался установить IsDropDownOpen, но это не работает.
Обновление: событие MessageBox.Show происходит в измененном выборе, поэтому я решил, что оно еще не закрыло выпадающий список. Как можно обойти это хотя?
Обновление 2: код, который у меня сейчас есть, выглядит следующим образом. ComboBox использует событие 'LostFocus' (для обработки ввода и / или выбора) для вызова метода CheckDOB. CheckDOB - то, где я тогда показываю MessageBox
1 ответ
Ну, я не могу воспроизвести вашу проблему, но я верю, что использование 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);
}));
}