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