从KeyData中提取KeyCode

时间:2013-09-15 10:43:03

标签: c# .net input key

如何从System.Windows.Forms.Keys值中提取KeyCode标志(没有修饰符的System.Windows.Forms.Keys值)?

假设Keys有标记Keys.ControlKeys.ShiftKeys.A。我想提取Keys.A标志,但Keys的标志(包括修饰符)是可变的。

2 个答案:

答案 0 :(得分:8)

Keys枚号已经有了一个掩码,它的名字不会让你感到惊讶:

  Keys code = keyData & Keys.KeyCode;

它的基础值是0xffff,有效地屏蔽了修饰符状态位。一个类似的掩码值可用于隔离修饰符位,它是Keys.Modifiers(0xffff0000)。

答案 1 :(得分:2)

我认为这就是你想要的:

Keys excludeModifier = yourKey & ~Keys.Control & ~Keys.Shift & ~Keys.Alt;