我试图检测在 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
我可以通过删除 and 语句和第二个 keyvalue 语句来检测一个或另一个键,但是当我尝试这个时我没有真正得到任何东西。还有其他方法吗?
谢谢
最佳答案
首先,And
在您的代码中应该是 AndAlso
因为它是一个逻辑运算符。 And
在VB中是位运算符。接下来,您可以使用 Modifiers
property测试修饰键:
If (e.KeyCode And Not Keys.Modifiers) = Keys.T AndAlso e.Modifiers = Keys.Ctrl Then
MessageBox.Show("Ctrl + T")
End If
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 …
在这两个片段中,我们都使用了 bit masks .
关于vb.net - 你如何在 VB.NET 中检测同时按下的按键,例如 "Ctrl + T"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803761/