我试图在VB.NET中检测到同时按下"Control"和"t"键.我到目前为止的代码如下:
Private Sub frmTimingP2P_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyValue = Keys.ControlKey And e.KeyValue = Keys.T Then
MessageBox.Show("Ctrl + T")
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我可以通过删除and语句和第二个keyvalue语句来检测一个键或另一个键,但是当我尝试这个时,我真的没有得到任何东西.还有另一种方法吗?
谢谢
Kon*_*lph 10
首先,And在你的代码中应该是AndAlso因为它是一个逻辑运算符.And在VB中是一个位操作符.接下来,您可以使用该Modifiers属性来测试修饰键:
If (e.KeyCode And Not Keys.Modifiers) = Keys.T AndAlso e.Modifiers = Keys.Ctrl Then
MessageBox.Show("Ctrl + T")
End If
Run Code Online (Sandbox Code Playgroud)
的e.KeyCode And Not Keys.Modifiers掩盖了修饰键中的条件的第一部分是必要的.
If e.Modifiers = Keys.Ctrl也可以写成If e.Control.
或者,我们可以通过直接询问组合Ctrl+ 是否T被按下来整理这两个查询:
If e.KeyCode = (Keys.T Or Keys.Ctrl) Then …
Run Code Online (Sandbox Code Playgroud)
在两个片段中,我们都使用了位掩码.