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);
}
}
2条答案
按热度按时间gcmastyq1#
您需要处理像
KeyDown
这样的键盘事件。这些为您提供每次按键或释放时的事件。在事件处理程序中,您需要过滤按下的键并执行需要执行的任何操作:
由于
KeyDown
事件被绑定到一个控件,并且只有当控件具有焦点时才会被触发,因此您需要考虑希望从哪个控件触发事件。为了让事件在应用中的任何地方触发,this blog post提供了一个简洁的解决方案:通过在应用启动期间将
KeyDown
事件注册到所有控件,只要您的应用处于焦点中,它就会始终触发,因为始终有一个控件处于焦点中。要实现这一点,请将以下内容添加到应用的OnStartup()
方法中(在app.xaml.cs中):8i9zcol22#
请明确使用xamarin或Maui,也有一些不同,关于MauiProgram.cs我认为他覆盖onstarup取代MauiProgram.cs,所以,朋友们在这里谁解决或找到在Maui的keydown事件的答案?我不知道他是谁,但他告诉我,要等到. net8,也许...