如何检测键盘输入?

How to detect keyboard inputs?

我想检测何时按下键盘上的某个键来执行命令。因此,当我按下 F 键时,它会执行一个操作。我该怎么做?

您需要像KeyDown一样处理键盘事件。这些为您提供每次按键或释放时的事件。

在事件处理程序中,您需要过滤按下哪个键并执行需要完成的任何操作:

public void MyKeyDownEventHandler(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == 70)
        {
            MessageBox.Show("'F' key pressed");
        }
}

由于 KeyDown 事件绑定到一个控件,并且只会在控件具有焦点时触发,因此您需要考虑要从哪个控件触发事件。为了在您的应用中的任何地方触发事件,this blog post 提供了一个巧妙的解决方案:

通过在您的应用程序启动期间向所有控件注册 KeyDown 事件,只要您的应用程序处于焦点状态,它就会始终触发,因为始终有一个控件处于焦点状态。为此,请将其添加到应用程序的 OnStartup() 方法中(在 app.xaml.cs 内):

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        EventManager.RegisterClassHandler(typeof(Control),
            Control.KeyDownEvent,
            new KeyEventHandler(MyKeyDownEventHandler));

        base.OnStartup(e);
    }
}