C#:从KeyEventArgs的KeyData中获取正确的键

时间:2009-05-14 21:08:47

标签: c# enums enum-flags keyeventargs

我正在捕获KeyDown事件,我需要能够检查当前按下的键是否为: Ctrl + Shift + M


我知道我需要使用e.KeyData中的KeyEventArgsKeys枚举以及Enum Flags和位的内容,但我不确定如何检查组合

3 个答案:

答案 0 :(得分:12)

您需要使用KeyEventArgs类的Modifiers属性。

类似的东西:

//asumming e is of type KeyEventArgs (such as it is 
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise

ctrlShiftM = ((e.KeyCode == Keys.M) &&               // test for M pressed
              ((e.Modifiers & Keys.Shift) != 0) &&   // test for Shift modifier
              ((e.Modifiers & Keys.Control) != 0));  // test for Ctrl modifier
if (ctrlShiftM == true)
{
    Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}

答案 1 :(得分:1)

我认为最容易使用它:

if(e.KeyData == (Keys.Control | Keys.G))

答案 2 :(得分:-2)

您可以使用类似于以下的技术进行检查:

if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)

这与正常的密钥检查相结合,可以为您提供所需的答案。