Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keyboard 确定VirtualKey是否是修改键?_Keyboard_Uwp - Fatal编程技术网

Keyboard 确定VirtualKey是否是修改键?

Keyboard 确定VirtualKey是否是修改键?,keyboard,uwp,Keyboard,Uwp,在我的UWP应用程序中,我通过观察KeyDown事件来检测按键。这给了我一个虚拟游戏。但是我如何判断该键是否为修改键呢?这是我最好的选择。我确信它是不完整的,而且它肯定不是未来的证据。我希望有更好的答案。同时,其他人被邀请添加我错过的钥匙 public static VirtualKey[] ModifierKeys = { VirtualKey.Shift, VirtualKey.LeftShift, VirtualKey.RightShift, VirtualKey.Left

在我的UWP应用程序中,我通过观察KeyDown事件来检测按键。这给了我一个虚拟游戏。但是我如何判断该键是否为修改键呢?

这是我最好的选择。我确信它是不完整的,而且它肯定不是未来的证据。我希望有更好的答案。同时,其他人被邀请添加我错过的钥匙

public static VirtualKey[] ModifierKeys =
{
  VirtualKey.Shift,
  VirtualKey.LeftShift,
  VirtualKey.RightShift,
  VirtualKey.LeftWindows,
  VirtualKey.RightWindows,
  VirtualKey.Menu,    // aka alt
  VirtualKey.Control,
  VirtualKey.LeftControl,
  VirtualKey.RightControl,
  VirtualKey.CapitalLock,
  VirtualKey.NumberKeyLock,
  VirtualKey.Insert,
};

public static bool IsModifierKey(this VirtualKey key) {
  bool r = ModifierKeys.Contains(key);
  return r;
}

您正在询问您认为解决方案的一部分是什么。你想解决什么问题?通常,当有人在
KeyDown
事件处理程序中请求修饰符时,他们已经选择了错误的解决方案。我想检测并响应按键。在修改键的情况下,我根本不想响应。对于文本键,我可以通过订阅CharacterReceived来获取文本。其他按键我不能用这种方式捕捉,所以我也订阅了KeyDown。在这里,我用特定的键做各种事情——不包括修改器。因此,我没有从这里结束使用信息,但我最终使用了数组,就像在KeyDown中一样,我根据所按下的修饰符进行不同的处理。为了添加更多的上下文,这是一个Windows前端,用于其他平台上已经存在的应用程序。因此,它有许多不同的处理程序用于各种按键。前端的工作只是找出按下了什么,并使用某种合理的映射将其转换为核心的按键类型。