2013-07-08 2 views
0

В Visual Basic 2010 express я изначально использовал событие keyDown, чтобы использовать стрелки для управления Picturebox, но он запускался только при удержании Ctrl + стрелка .. и решение, которое я нашел в Интернете, это использовать 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 

Также попробуйте добавить 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 вместо PreviewKeyDown, Li ke this:

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

Смежные вопросы