MessageBox弹出ComboBox下拉列表,隐藏MessageBox中的内容

时间:2011-11-14 19:24:23

标签: wpf user-interface combobox messagebox

在我正在进行的项目中,我有一个日期的ComboBox,根据应用程序中其他地方的某些其他标准来计算人的年龄。

如果用户选择了某个日期,我们会向用户弹出一个通知,告知我们由于此而在表单上更改了一些内容。

messagebox behind dropdown list

正如您在图片中看到的那样,组合框的项目在弹出时最终仍会保留在消息框的顶部。用户仍然可以单击“确定”,并可以移动该框,但这是向用户显示信息的奇怪方式。

有没有办法弹出此列表上方的消息框,或者在消息框出现之前隐藏列表?我尝试设置IsDropDownOpen,但这不起作用。

更新:MessageBox.Show事件发生在选择更改中,这就是为什么我认为它还没有关闭下拉菜单。怎么可以解决这个问题?

更新2 :我目前的代码是这样的。 ComboBox使用'LostFocus'事件(处理打字和/或选择)来调用CheckDOB方法。然后我在CheckDOB中显示MessageBox

1 个答案:

答案 0 :(得分:2)

我不能重复你的问题,但我相信使用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); 

      }));
}