在我正在进行的项目中,我有一个日期的ComboBox,根据应用程序中其他地方的某些其他标准来计算人的年龄。
如果用户选择了某个日期,我们会向用户弹出一个通知,告知我们由于此而在表单上更改了一些内容。
正如您在图片中看到的那样,组合框的项目在弹出时最终仍会保留在消息框的顶部。用户仍然可以单击“确定”,并可以移动该框,但这是向用户显示信息的奇怪方式。
有没有办法弹出此列表上方的消息框,或者在消息框出现之前隐藏列表?我尝试设置IsDropDownOpen,但这不起作用。
更新:MessageBox.Show事件发生在选择更改中,这就是为什么我认为它还没有关闭下拉菜单。怎么可以解决这个问题?
更新2 :我目前的代码是这样的。 ComboBox使用'LostFocus'事件(处理打字和/或选择)来调用CheckDOB方法。然后我在CheckDOB中显示MessageBox
答案 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);
}));
}