C#:在文本框的keydown事件中,如何检测当前按下的修饰符+键?

C#:在文本框的keydown事件中,如何检测当前按下的修饰符+键?

我做了以下,但我不太熟悉这些操作符,所以我不确定是否以及我做错了什么。

private void txtShortcut_KeyDown(object sender, KeyEventArgs e) { if (e.Modifiers == (Keys.Alt || Keys.Control || Keys.Shift)) { lbLogger.Items.Add(e.Modifiers.ToString() + " + " + "show non-modifier key being pressed here"); } } 

1)我如何检查e是否包含任何修饰键?

根据msdn linkt

 private void txtShortcut_KeyDown(object sender, KeyEventArgs e) { if (e.Alt || e.Control || e.Shift)) { lbLogger.Items.Add(e.ToString() + " + " + "show non-modifier key being pressed here"); } } 

文档说它是一个按位组合,但你正在做一个逻辑OR。

尝试:

 if (e.Modifiers & (Keys.Alt | Keys.Control | Keys.Shift)) { lbLogger.Items.Add(e.Modifiers.ToString() + " + " + "show non-modifier key being pressed here"); } 

我认为你可以用e.KeyCode.ToString()获得实际的密钥。