我想检测Windows应用程序中的键盘组合键(例如Control-A
)。KeyDown
事件处理程序包含有关最后按下的键的信息。但是,如何找出是否同时按下了 Control 键?
我想检测Windows应用程序中的键盘组合键(例如Control-A
)。KeyDown
事件处理程序包含有关最后按下的键的信息。但是,如何找出是否同时按下了 Control 键?
您可以使用 CoreVirtualKeyStates.HasFlag(CoreVirtualKeyStates.Down)
来判断是否按下了 Ctrl 键,像这样 -
Window.Current.CoreWindow.KeyDown += (s, e) =>
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.VirtualKey == VirtualKey.A)
{
// do your stuff
}
};
Window.Current.CoreWindow.KeyDown
而不是您页面上的 KeyDown
事件,这就像我在回答中提到的那样。 - Justin XLpublic MyPage()
{
Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += AcceleratorKeyActivated;
}
private void AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if (args.EventType.ToString().Contains("Down"))
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down))
{
switch (args.VirtualKey)
{
case VirtualKey.A:
Debug.WriteLine(args.VirtualKey);
Play_click(sender, new RoutedEventArgs());
break;
}
}
}
}
KeyPressed == Control | A
。 - kevintjuh93A
。 - ispiroKeyboard
类来实现。不幸的是,在 UWP 中这是无法访问的。 - ispiro