2013-07-08 70 views
0

在visual basic 2010 express中,我最初使用keyDown事件來使用箭頭來控制一個picturebox,但只有在按住ctrl + arrowkey時纔會觸發。我在網上找到的解決方案是使用previewKeyDown事件。這隻會觸發一次,然後根本不響應任何按鍵。 KeyPreview已設置爲true。PreviewKeyDown只會觸發一次

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 

回答

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 

也可以嘗試,而不是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 
+0

它沒有任何區別.. – user2128195

+0

我測試了它,它適用於我。檢查是否有其他keydown事件處於活動狀態並更改焦點。 – bansi

+0

我打開了另一個項目並開始使用keydown事件,然後再添加其他項目,並且由於某種原因它現在可以正常工作。我也會添加句柄標誌。謝謝您的幫助! – user2128195

0

嘗試使用KeyDown,關鍵字:

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 
+0

我試過這個,但是當我執行程序時,我必須按住ctrl才能使用箭頭鍵,否則沒有任何反應。 – user2128195