在Visual Basic中,我尝试使用键盘(“W”和“S”键以及上下箭头)在乒乓球游戏中移动两个图片框。
如果屏幕上有按钮或文本框,它们不会移动,但当我移除按钮/文本框时,它们会移动。我认为这可能与能够使用箭头键在它们之间导航有关,但我不知道如何确切地阻止这种情况的发生。
发布于 2017-08-16 15:19:35
使用这些事件向上、向下移动,
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
您还可以使用相同的事件来处理TextBoxes和按钮上的向上、向下操作。以编程方式添加处理程序
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
https://stackoverflow.com/questions/45713687
复制