如何检测 VB.NET 中按下的多个修改按钮和字符

How to detect multiple modifier buttons and character pressed in VB.NET

在一个 VB.NET 项目中(在 VS2013 中工作)我需要在用户按下 CTRL + LEFT SHIFT + M 时做一些事情。

我最接近的结果是只能检测到修改键之一和 M 键。

this question here in SO,但提供的示例代码的唯一答案检测到字符键和一个或另一个修饰键,而不是两者。

我已经找了一段时间了,我看到的唯一例子显示只检测到一个修饰键,我不知道如何检测两个修饰键和一个字符键。

这是我目前拥有的代码:

If My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.ShiftKeyDown AndAlso (e.KeyCode And Not Keys.Modifiers) = Keys.M Then
    HideForm()
End If

看起来在 KeyDown 事件中只检测到一个键,我猜这是有道理的,因为事件将针对每个键单独触发。

那么我如何检测所有三个键何时被按下?

尝试在您正在使用的表单上使用 ProcessCmdKey 覆盖:

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
  If keyData = (Keys.Control Or Keys.Shift Or Keys.M) Then
    ' do something
    Return True
  End If
  Return MyBase.ProcessCmdKey(msg, keyData)
End Function