如何扩展标记的枚举

eba*_*lga 1 c#

我有一个像这样的组合键

Keys key=Keys.Control | Keys.Shift | Keys.D ...
Run Code Online (Sandbox Code Playgroud)

我不知道如何将键变量扩展为分离的Keys值.也许是这样的

foreach(Keys k in key)
{
   MessageBox.Show(k.ToString());
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很愚蠢.这该怎么做?

con*_*tor 9

请参阅密钥的定义.除以下内容外,所有值均作为正常的互斥值:

//     The bitmask to extract a key code from a key value.
KeyCode = 65535,
//     The SHIFT modifier key.
Shift = 65536,
//     The CTRL modifier key.
Control = 131072,
//     The ALT modifier key.
Alt = 262144,
Run Code Online (Sandbox Code Playgroud)

所以你需要检查的是alt,control和shift.要获得未移位的密钥,请使用

Keys value = key & Keys.KeyCode
Run Code Online (Sandbox Code Playgroud)

要确定是否按下了shift,alt或control

bool altValue = key & Keys.Alt
bool controlValue = key & Keys.Control
bool shiftValue = key & Keys.Shift
Run Code Online (Sandbox Code Playgroud)

就是这样