在为可编辑的comboBox使用LostFocus事件时遇到问题。
private void comboBox8_LostFocus(object sender, RoutedEventArgs e)
{
...
else if (8int <= 7int && 8int >= 100)
{
MessageBox.Show("Error description", "Error!", MessageBoxButton.OK, MessageBoxImage.Information);
}
else
...
}
即使我在comboBox文本字段上单击鼠标进行编辑,一切正常,但消息框显示除外。如果我使用前一个字段中的“tab”,则没有消息框。但直接鼠标单击会导致错误消息框。我需要它只在我使用“tab”离开那个comboBox或点击其他地方的鼠标时显示(lostfocus)。有人可以帮我提一下建议吗?我找不到类似的情况。谢谢。
答案 0 :(得分:1)
您想要倾听TextBox
ComboBox
的{{1}}部分。
LostFocus
答案 1 :(得分:1)
哦,这对我有用:
private void comboBox8_LostFocus(object sender, RoutedEventArgs e)
{
...
else if (8int <= 7int && 8int >= 100)
{
if (!comboBox8.IsKeyboardFocusWithin)
{
MessageBox.Show("Error description", "Error!", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
else
...
}
谢谢!!!
答案 2 :(得分:0)
还有另一种方法,不是上面的方法没有用:)检查RoutedEventArgs的源和原始源。
如果该事件发生在控件内部,则它是一个内部失焦事件(组合框具有多个内部控件),并且源和原始源将具有相同的类型。
此代码对我来说很好用。当组合框实际上失去焦点时,我会“做某事”。
**private void TimePicker_LostFocus(object sender, System.Windows.RoutedEventArgs e)
{
if (e.OriginalSource.GetType().Name != e.Source.GetType().Name)
{
Validate();
}
}**
希望这很有帮助
/ T