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

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


我知道我需要使用KeyEventArgse.KeyDataKeys枚举以及Enum Flags和bits的内容,但我不确定如何检查组合。

您需要使用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"); } 

我认为最容易使用它:

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

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

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

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