C# c ProcessCmdKey重载,匹配泛型组合

C# c ProcessCmdKey重载,匹配泛型组合,c#,C#,在某些控件上,如果用户按下的键是ALT和字母表中的任何字母,我希望ProcessCmdKey返回true 如果用户用下面的代码按下Alt,我可以返回true,但是我如何添加同时按下字母的条件呢 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if ((keyData & Keys.Alt) != 0) { return true;

在某些控件上,如果用户按下的键是ALT和字母表中的任何字母,我希望ProcessCmdKey返回true

如果用户用下面的代码按下Alt,我可以返回true,但是我如何添加同时按下字母的条件呢

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
             if ((keyData & Keys.Alt) != 0) {
                  return true;
             }
}
谢谢。

xor应该可以工作:

 if ((keyData & Keys.Alt) == Keys.Alt & (keyData ^ Keys.Alt) != 0) {
      return true;
 }
xor应该工作:

 if ((keyData & Keys.Alt) == Keys.Alt & (keyData ^ Keys.Alt) != 0) {
      return true;
 }

看起来效果不错,谢谢。我能问一下keyData&Keys.KeyCode返回什么以及为什么返回吗?具体什么是Keys.KeyCode?非常感谢。Keys.KeyCode是一个位掩码,其中设置了最低有效16位。在关键点上单击鼠标右键,然后选择“转到定义”以查看它。此外,还有一个位掩码Keys.Modifiers,用于设置MSB。它似乎工作得很好,谢谢。我能问一下keyData&Keys.KeyCode返回什么以及为什么返回吗?具体什么是Keys.KeyCode?非常感谢。Keys.KeyCode是一个位掩码,其中设置了最低有效16位。在关键点上单击鼠标右键,然后选择“转到定义”以查看它。此外,还有一个位掩码Keys.Modifiers,用于设置MSB。Keys.Alt应为Keys.Alt。每次按下Alt键时,该选项将返回“true”,并且在按下alt键的同时按下任何其他键时也将返回“true”:换句话说,它不会根据字母表中的任何字母进行过滤。keys.alt应该是键。alt每次按下alt键时都将返回“true”,当alt键按下时,每当按下任何其他键时,也会返回“true”:换句话说,它不会根据字母表中的任何字母进行过滤。您的代码不会按原样编译,因为在alt-down测试为非true的情况下没有返回值。使用over-riding ProcessCmdKey的良好实践是调用:return base.ProcessCmdKeyref msg,keyData;当您没有处理关键事件时:请参阅下面Henrik的回答,它为您提供了所需的准确测试。您的代码不会按原样编译,因为在Alt down测试为非true的情况下没有返回值。使用over-riding ProcessCmdKey的良好实践是调用:return base.ProcessCmdKeyref msg,keyData;当您没有处理关键事件时:请参阅下面Henrik的答案,它为您提供了所需的准确测试。