2017-08-16 49 views
0

在Visual Basic中,我嘗試使用我的鍵盤('W'和'S'鍵以及向上和向下箭頭)在我的pong遊戲中移動2個圖片框。嘗試使用鍵盤,而文本框在屏幕上

如果屏幕上有任何按鈕或文本框,它們將不會移動,但是當我移除按鈕/文本框時,它們將不會移動。我認爲這可能與使用箭頭鍵在它們之間導航有關,但我不知道如何阻止它發生。

+0

哪種技術? WinForms或WPF? – miroxlav

+0

我對Visual Basic相當陌生,所以說實話我不太確定,我想WinForms。 – Cormack

+0

然後,您可能需要學習[如何:在窗體級別處理鍵盤輸入](https://docs.microsoft.com/en-us/dotnet/framework/winforms/how-to-handle-keyboard-input- (或者其他一些資源,只是搜索)並實現它。如果某些東西不適合你,那麼返回這裏並且編輯描述你的具體問題的問題(當然,如果你之前沒有找到解決方案的話)。 – miroxlav

回答

0

使用這些事件上移,下移,

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