检测按下键盘Tab键后是否收到焦点

时间:2019-03-20 11:19:14

标签: c# wpf

我需要有逻辑来处理元素的GotKeyboardFocus事件,并区分它是由Tab键还是其他方式触发的。但是我知道只有广义事件GotKeyboardFocus。如何通过按事件处理程序方法内的Tab键来检测是否收到焦点?还是还有其他事件?

1 个答案:

答案 0 :(得分:2)

您必须订阅GotFocusGotKeyboardfocus事件,然后检查按键是否存在:

<TextBox GotFocus="UIElement_OnGotFocus"/> 

在处理程序中:

if (Keyboard.PrimaryDevice.IsKeyDown(Key.Tab))
{
  // Do something when Tab is pressed
}

也许您想扩展TextBox类来处理此事件,而不在XAML中附加事件处理程序。

public class CustomTextBox : TextBox
{
  protected override void OnGotFocus (System.Windows.RoutedEventArgs e)
  {
    if (Keyboard.PrimaryDevice.IsKeyDown(Key.Tab))
    {
      // Do something when Tab is pressed
    }
  }
}