Problem bei VB Keydown

...komplette Frage anzeigen

2 Antworten

KeyDown ist ein EReignis. Es kann nur an eine Deiner Prozeduren gesandt werden.

Du musst alle Aktionen in die eine Prozedur packen also z.B.

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.W Then 
        '...
    ElseIf e.KeyCode = Keys.S Then
    '...
    'usw.
    End If
End Sub

Besser ist folgende Lösung:

  Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Select Case e.KeyCode
      Case Keys.W
        Timer1.Enabled = True
        Timer2.Enabled = False
        Timer3.Enabled = False
        Timer4.Enabled = False
      Case Keys.S
        Timer1.Enabled = False
        Timer2.Enabled = True
        Timer3.Enabled = False
        Timer4.Enabled = False
      Case Keys.A
        Timer1.Enabled = False
        Timer2.Enabled = False
        Timer3.Enabled = True
        Timer4.Enabled = False
      Case Keys.D
        Timer1.Enabled = False
        Timer2.Enabled = False
        Timer3.Enabled = False
        Timer4.Enabled = True
    End Select
  End Sub
horstfh 07.02.2015, 13:10

Noch ein Hinweis: Deine Timerintervals sind mit 1 Millisekunde (=1/1000 Sek) zu kurz, Da bemerkst Du wahrscheinlich gar keine Aktion.

0

Sub Form1_KeyDown kommt doch auch 2 mal vor. Für welche soll sich VB denn entscheiden? Viele Grüße Alexander

Was möchtest Du wissen?