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

时间:2016-01-05 16:28:40

标签: vb.net visual-studio-2013 keydown

在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事件中只检测到其中一个键,我想这是有意义的,因为事件将为每个键单独触发。

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

1 个答案:

答案 0 :(得分:2)

尝试在您使用的表单上使用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