2016-10-20 37 views
0

因此,我目前正在設計我的A級計算項目,並且我需要知道VB.NET是否可以同時註冊多個按鍵,例如F & J,並且能夠將它們視爲單獨的按鍵。我可能需要一次最多4個按鍵,所以如果VB.NET不能這樣做,我的程序將受到限制(儘管只是稍微)。VB.NET可以一次註冊多少個按鍵是否有限制?

如果這是可能的,我是否只是把它當作沒有同時按下並單獨檢查兩個按鍵,還是有一種特殊的檢測方法?

在此先感謝。

+6

不知道VB有什麼關係,它的鍵盤驅動程序和硬件負責那。例如,一些遊戲鍵盤可以同時處理10個按鍵,標準鍵盤可以處理3到5個頂部。 – Stavm

+0

我同意上面的評論。您的應用程序將獲取PC註冊的所有密鑰。 您必須捕捉應用程序中的哪些按鍵。 – Pure

+0

這是鍵盤的一個屬性,名爲[「rollover」](https://en.wikipedia.org/wiki/Rollover_(key))。通常你只能計算3個鍵,在那之後便宜的鍵。除了通過試驗和錯誤之外,沒有任何方法可以確定密鑰在矩陣中的位置。或者通過仔細購物。隊列大小與它無關。 –

回答

2

您可以跟蹤你已經按下,並釋放鍵。

創建一個新的winforms項目並添加一個標籤。這應該給你一個很好的起點。

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

+0

謝謝,這會有很大的幫助。 – Hado

相關問題