VB.NET可以同时注册多少次按键是否有限制?

时间:2016-10-20 13:28:35

标签: vb.net vb.net-2010 keypress

所以我正在设计我的A级计算项目,我需要知道VB.NET是否可以同时注册多个按键,例如F& J,并且能够将它们视为单独的按键。我可能需要一次最多4个按键,所以如果VB.NET不能这样做,我的程序将受到限制(虽然只是轻微)。

如果可以的话,我是否只是将它们视为没有同时按下并单独检查两个键,或者是否有特殊的方法来检测它?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以跟踪已按下并释放的按键。

创建一个新的winforms项目并添加一个Label。这应该给你一个很好的起点。

Public Class Form1

    Private pressedKeys As New List(Of System.Windows.Forms.Keys)()

    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
        If Not pressedKeys.Contains(e.KeyCode) Then pressedKeys.Add(e.KeyCode)
        printCurrentKeys()
    End Sub

    Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
        If pressedKeys.Contains(e.KeyCode) Then pressedKeys.Remove(e.KeyCode)
        printCurrentKeys()
    End Sub

    Private Sub printCurrentKeys()
        If pressedKeys.Count > 0 Then
            Me.Label1.Text = pressedKeys.
                Select(Of String)(Function(k) Chr(k)).
                Aggregate(Function(s1, s2) s1 & ", " & s2)
        Else
            Me.Label1.Text = ""
        End If
    End Sub

End Class

enter image description here

(上述8个键可以通过我的anti-ghosting键盘Sidewinder X4完成。)

答案 1 :(得分:1)

据说你可以登记注册表

Dim KeyboardDataQueueSize = My.Computer.Registry.GetValue(
            "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kbdclass\Parameters", 
            "KeyboardDataQueueSize", Nothing)

https://www.google.com/search?q=keyboard+buffer+size