0
在Visual Basic中,我嘗試使用我的鍵盤('W'和'S'鍵以及向上和向下箭頭)在我的pong遊戲中移動2個圖片框。嘗試使用鍵盤,而文本框在屏幕上
如果屏幕上有任何按鈕或文本框,它們將不會移動,但是當我移除按鈕/文本框時,它們將不會移動。我認爲這可能與使用箭頭鍵在它們之間導航有關,但我不知道如何阻止它發生。
在Visual Basic中,我嘗試使用我的鍵盤('W'和'S'鍵以及向上和向下箭頭)在我的pong遊戲中移動2個圖片框。嘗試使用鍵盤,而文本框在屏幕上
如果屏幕上有任何按鈕或文本框,它們將不會移動,但是當我移除按鈕/文本框時,它們將不會移動。我認爲這可能與使用箭頭鍵在它們之間導航有關,但我不知道如何阻止它發生。
使用這些事件上移,下移,
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
Select Case e.KeyCode
Case Keys.Up
moveUp()
e.Handled = True
Case Keys.Down
moveDown()
e.Handled = True
End Select
End Sub
Private Sub Form1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs)
Select Case e.KeyCode
Case Keys.Up
moveUp()
Case Keys.Down
moveDown()
End Select
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
Select Case e.KeyCode
Case Keys.Up, Keys.Down
stopMoving()
e.Handled = True
End Select
End Sub
Private Sub moveUp()
Me.Text = "Moving Up"
End Sub
Private Sub moveDown()
Me.Text = "Moving Down"
End Sub
Private Sub stopMoving()
Me.Text = "Idle"
End Sub
你也可以使用相同的事件處理上,下的文本框和按鈕。添加處理程序編程
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each c As Control In Me.Controls
AddHandler c.KeyDown, AddressOf Form1_KeyDown
AddHandler c.PreviewKeyDown, AddressOf Form1_PreviewKeyDown
AddHandler c.KeyUp, AddressOf Form1_KeyUp
Next
End Sub
注意:它只會增加直接在您的窗體上的處理程序來控制,而不是控件的容器內。儘管如此,無論容器如何埋藏,您都可以使用擴展方法來獲取所有的孩子。見https://stackoverflow.com/a/21388034/832052
哪種技術? WinForms或WPF? – miroxlav
我對Visual Basic相當陌生,所以說實話我不太確定,我想WinForms。 – Cormack
然後,您可能需要學習[如何:在窗體級別處理鍵盤輸入](https://docs.microsoft.com/en-us/dotnet/framework/winforms/how-to-handle-keyboard-input- (或者其他一些資源,只是搜索)並實現它。如果某些東西不適合你,那麼返回這裏並且編輯描述你的具體問題的問題(當然,如果你之前沒有找到解決方案的話)。 – miroxlav