Reakcja na buttona w Visual Basic

0

Witam.
Mam problem związany z obsługą klawiatury. Mianowicie chodzi o to, ze aby wysłać znak z klawiatury muszę wczesniej najechać na danego buttona kursorem lub strzałkami, a przy sterowaniu robotem jest to bardzo kłopotliwe i nie praktyczne. Chodzi mi o to, abym mógł od razu po wcisnieciu danego przycisku wysyłać znak, bez zbędnego zaznaczania danego buttona w programie.
Czemu tak jest ? Co zrobiłem źle ?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
SerialPort1.Write("q")
SerialPort1.Close()
End Sub

Private Sub Button1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Button1.KeyDown
    Select Case e.KeyCode
        Case Keys.NumPad1
            Button1.PerformClick()

    End Select
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Open()
SerialPort1.Write("g")
SerialPort1.Close()
End Sub

Private Sub Button2_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Button2.KeyDown
Select e.KeyCode
Case Keys.NumPad2
Button2.PerformClick()
End Select
End Sub

0

I co Ci nie działa? Wstaw brakepointy i zobacz co się dzieje.
Btw. Serialport możesz otworzyć raz i trzymać otwarty do zamknięcia programu. Będzie szybciej i bezpieczniej.

0

Napisałeś obsługę zdarzeń dla buttonów i się dziwisz, że działają tylko dla buttonów?
Napisz ją dla Form i jeszcze dodatkowo ustaw dla Form.KeyPreview na True, bo inaczej nie zadziała...

0

Możesz mi pokazać przykład jak to zrobić ? Ja dopiero zaczynam przygodę z VB i za bardzo nie wiem o co chodzi, a głowię się już nad tym od jakiegoś czasu.

1

@Marcin.Miga: ma rację. Mi to umknęło.
Zdarzenie KeyDown powinno być uruchomione dla formularza (Form). Kliknij na Form i w darzeniach znajdź KeyDown i tam wrzuć swój kod.
Dodatkowo trzeba ustawić Form.KeyPreview na true.

1 użytkowników online, w tym zalogowanych: 0, gości: 1