在Visual Basic中,我尝试使用键盘(' W'' S'键和上下箭头)在我的乒乓球游戏中移动2个图片框。
如果屏幕上有任何按钮或文本框,他们将无法移动,但是当我移除按钮/文本框时它们将会移动。我认为这可能与能够使用箭头键在它们之间导航有关,但我不知道如何阻止它发生。
答案 0 :(得分: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