Hallo
Wie mit euch in einem anderen Thread besprochen habe ich einen recht umfangreichen Code, um Tastenanschläge abzufangen und an eine Textbox zu senden.
Habe nun eine Demoanwendung gebastelt. Hier gibt es ein DGV und eine Textbox.
Wenn der User etwas auf der Tastatur tippt, soll die Textbox damit beschrieben werden, egal ob sie den Fokus hat, oder nicht.
Der Code sieht so aus (nur eben länger, u alle Möglichen Tasten abzufangen):
Spoiler anzeigen
Da dieser Code mittlerweile recht lang ist - und ich immernoch nicht alle Zeichen habe, bastel ich gerade an einer anderen Lösung, aber bekomme es nicht hin.
Mein neuer Gedanke ist nicht mehr den Text in eine nicht ausgewählte Box zu schreiben, sondern die Suchenbox einfach bei Tastendruck zu selektieren.
Das funktioniert soweit. Sobald eine Taste der Tastatur gedrückt wird, erhält die Textbox den Fokus und ich kann weiter schreiben.
Aber wie ihr am Code ja wahrscheinlich seht, wird der erste Tastenanschlag dann "verschluckt". Meine Lösung e.Keycode.tostring ist dabei natürlich murks.
Kann ich bei einem Tastendruck, die Textbox selektieren, BEVOR der Tastendruck an sich "also die konkrete Taste" an mein Programm gesendet wird?
Wie mit euch in einem anderen Thread besprochen habe ich einen recht umfangreichen Code, um Tastenanschläge abzufangen und an eine Textbox zu senden.
Habe nun eine Demoanwendung gebastelt. Hier gibt es ein DGV und eine Textbox.
Wenn der User etwas auf der Tastatur tippt, soll die Textbox damit beschrieben werden, egal ob sie den Fokus hat, oder nicht.
Der Code sieht so aus (nur eben länger, u alle Möglichen Tasten abzufangen):
VB.NET-Quellcode
- Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
- Select Case e.KeyCode
- Case Keys.D0 To Keys.D9 '0-9
- TBSearch.Text = (Convert.ToChar(e.KeyCode))
- Case Keys.NumPad0 To Keys.NumPad9 'Zehnertastatur 0-9
- TBSearch.Text =(Convert.ToChar(e.KeyCode - 48))
- Case Keys.A To Keys.Z, Keys.Escape, Keys.Enter
- TBSearch.Text =(e.KeyCode.ToString)
- 'usw.
- End Select
- End Sub
Da dieser Code mittlerweile recht lang ist - und ich immernoch nicht alle Zeichen habe, bastel ich gerade an einer anderen Lösung, aber bekomme es nicht hin.
Mein neuer Gedanke ist nicht mehr den Text in eine nicht ausgewählte Box zu schreiben, sondern die Suchenbox einfach bei Tastendruck zu selektieren.
VB.NET-Quellcode
- Private Sub frmMain_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
- Select Case e.KeyCode
- Case Keys.Escape 'Löschen von Suchen Textboxen
- If TCMain.SelectedTab Is TPParcels Then DelTBSearchText()
- End Select
- 'wenn TB nicht ausgewählt - auswählen und Wert übergeben
- If Not Me.TBSearchParcel.Focused Then
- Me.TBSearchParcel.Select()
- Me.TBSearchParcel.Text = (TBSearchParcel.Text & e.KeyCode.ToString).ToLower
- 'ans Ende der TBEingabe springen
- Me.TBSearchParcel.Select(TBSearchParcel.Text.Length, 0)
- End If
- End Sub
Das funktioniert soweit. Sobald eine Taste der Tastatur gedrückt wird, erhält die Textbox den Fokus und ich kann weiter schreiben.
Aber wie ihr am Code ja wahrscheinlich seht, wird der erste Tastenanschlag dann "verschluckt". Meine Lösung e.Keycode.tostring ist dabei natürlich murks.
Kann ich bei einem Tastendruck, die Textbox selektieren, BEVOR der Tastendruck an sich "also die konkrete Taste" an mein Programm gesendet wird?