如何确定导致WPF TextBox的GotFocus事件的原因 - 鼠标单击或TAB键?

时间:2010-06-22 11:14:26

标签: wpf textbox focus mouse tabs

如何确定导致WPF TextBox的GotFocus事件的原因 - 鼠标单击或TAB键? 如果使用TAB键设置焦点,我需要更改边框颜色,如果使用鼠标单击设置焦点,则需要保留边框的标准颜色。因此,我需要从事件参数中提取导致事件的原因,或者(更好)编写触发器以将其置于TextBox样式中。

2 个答案:

答案 0 :(得分:1)

我建议使用OnKeyUp和OnMouseUp事件而不是GotFocus事件来确定这一点。在OnKeyUp中,您需要测试(参见Eventargs)它是被按下的Tab键。

答案 1 :(得分:0)

您可以扩展WPF TextBox,然后将其用于所有文本框吗?然后你可以有一些被覆盖的事件来确定你的聚焦方式,或者进行边框更改。

class MySpecialTextBox : TextBox
{
    protected override void OnIsKeyboardFocusWithinChanged(System.Windows.DependencyPropertyChangedEventArgs e)
    {
        // Focused by keyboard
    }

    protected override void OnMouseUp(System.Windows.Input.MouseButtonEventArgs e)
    {
        // Focused by mouse
    }

    protected override void OnIsMouseCaptureWithinChanged(System.Windows.DependencyPropertyChangedEventArgs e)
    {
        // Focused by mouse
    }
}