XAML 如何检测键盘输入?

9ceoxa92  于 2023-05-11  发布在  其他
关注(0)|答案(2)|浏览(136)

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

gcmastyq

gcmastyq1#

您需要处理像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);
    }
}
8i9zcol2

8i9zcol22#

请明确使用xamarin或Maui,也有一些不同,关于MauiProgram.cs我认为他覆盖onstarup取代MauiProgram.cs,所以,朋友们在这里谁解决或找到在Maui的keydown事件的答案?我不知道他是谁,但他告诉我,要等到. net8,也许...

相关问题