0

在visual basic 2010 express中,我最初使用keyDown事件来使用箭头来控制一个图片框,但它只在按住ctrl + arrowkey时触发。我在网上找到的解决方案是使用previewKeyDown事件。这只会触发一次,然后根本不响应任何按键。KeyPreview 已设置为 true。

  Private Sub Form1_PreviewKeyDown(ByVal sender As System.Object, ByVal e As    System.Windows.Forms.PreviewKeyDownEventArgs) Handles MyBase.PreviewKeyDown
    Select Case e.KeyCode
        Case Keys.Up
            vy = vy - 2
        Case Keys.Left
            vx = vx - 2
        Case Keys.Right
            vx = vx + 2
    End Select
  End Sub
4

2 回答 2

0

改变

Private Sub Form1_PreviewKeyDown(ByVal sender As System.Object, ByVal e As    System.Windows.Forms.PreviewKeyDownEventArgs) Handles MyBase.PreviewKeyDown

Private Sub Form1_PreviewKeyDown(ByVal sender As System.Object, ByVal e As    System.Windows.Forms.PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown

也尝试添加e.Handled=True

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Select Case e.KeyCode
        Case Keys.Up
            vy = vy - 2
            e.Handled = True
        Case Keys.Left
            vx = vx - 2
            e.Handled = True
        Case Keys.Right
            vx = vx + 2
            e.Handled = True
    End Select
End Sub
于 2013-07-08T04:41:23.873 回答
-1

尝试使用KeyDown, 而不是PreviewKeyDown, 像这样:

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Select Case e.KeyCode
        Case Keys.Up
            vy = vy - 2 
        Case Keys.Left
            vx = vx - 2
        Case Keys.Right
            vx = vx + 2                       
    End Select
End Sub
于 2013-07-08T04:42:06.260 回答