vb.net - 你如何在 VB.NET 中检测同时按下的按键,例如 "Ctrl + T"?

标签 vb.net keydown

我试图检测在 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/

相关文章:

jquery - 人用keydown跳跃的错觉

c# - 在 C# 中的 datagridview 单元格中捕获按键

javascript - 是否可以获取 "current"或 "last"事件的事件对象,而不将其作为处理程序中的参数接收?

c# - 如何以编程方式将 Word 文件转换为 PDF?

asp.net - 将日期/时间插入 Access 数据库

vb.net - SSIS 脚本任务抑制错误

excel - VB.Net:在 Excel 单元格中插入数据验证

mysql - vb.net INSERT CURDATE() 到 MySQL 问题

c# - C# 中用于系统键的 KeyDown 事件

javascript - 为什么方向键导航在反转方向时返回错误的值?