如何检测 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
在一个 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