C#Keys Enumeration Confused:Keys.Alt或Keys.RButton | Keys.ShiftKey | Keys.Alt

Set*_*ron 6 c# enums

我试图测试是否按下了Alt键.

我有一张类似的支票:

private void ProcessCmdKey(Keys keyData)
{
 if (keyData == Keys.Alt)
 {
  System.Console.WriteLine ("Alt Key Pressed");
 } 
}
Run Code Online (Sandbox Code Playgroud)

无论如何我不知道当我按下Alt键的时候,调试器告诉我按下的键实际上是Keys.RButton | Keys.ShiftKey | Keys.Alt

任何人都可以对正在发生的事情有所了解或者可能指向一篇可以解释的文章吗?

谢谢FZ

编辑:我仍然有点迷失为什么ENUM会设置其他位值而不是简单的Alt键?我知道enum可以包含多个带有标记attrivbute的状态,但是如果我按下的所有内容都是Alt,我不知道为什么会这样做?

Mar*_*ell 6

如果要测试是否Alt是按下的键的一部分,可以执行按位测试;

if((keyData & Keys.Alt) == Keys.Alt) {...}
Run Code Online (Sandbox Code Playgroud)