如何检测键盘输入?
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);
}
}
我想检测何时按下键盘上的某个键来执行命令。因此,当我按下 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);
}
}