在可编辑的comboBox上使用LostFocus事件时的Messagebox

时间:2013-03-22 17:17:10

标签: c# combobox messagebox

在为可编辑的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)。有人可以帮我提一下建议吗?我找不到类似的情况。谢谢。

3 个答案:

答案 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