Datagridview mit Pfeiltasten steueren

ggb83

Grünschnabel
Hallo Community,

ich habe folgendes Problem:

Ich habe ein Formular mit einer Textbox und einem Datagrid mit Access-Datenbankverbindung.

Sobald man auf eine Datagridzeile klickt wird sofort die Textbox selektiert.
Die Textbox arbeitet unabhängig vom Datagrid (Keine Datenbindung etc.)

Wenn man nun in der Textbox die Pfeil-nach-unten bzw. Pfeil nach oben Taste drückt,
soll dies die nächste bzw. vorige Zeile im Datagrid selektieren und zwar so als würde man mit der Maus darauf klicken, da im Hintergrund ein Datagridview.Selectionchanged Eventhandler arbeitet.

Ich habe bereits versucht dies über Keydown zu lösen, doch dies funktioniert nicht richtig:

Es wird zwar die nächste Zeile selektiert aber die Zellwerte ändern sich nicht und
dieses Event funktioniert nur beim ersten mal und funktioniert dann nicht mehr.

Hier der Code:

AddHandler tb_lagerort.KeyDown, AddressOf tb_lagerort_keydown
Sub tb_lagerort_keydown(ByVal sender As Object, _
ByVal e As KeyEventArgs)
Select Case e.KeyData
Case Keys.Down
Debug.Print("Runter für Datagrid1 gedrückt!")
If Form1.DataGridView1.Rows.Count > 0 Then
Form1.DataGridView1.Rows(Form1.DataGridView1.CurrentRow.Index + 1).Selected = True

End If
e.Handled = True
Case Keys.Up
Debug.Print("Rauf für Datagrid1 gedrückt!")
e.Handled = True
End Select
End Sub


Könnt Ihr mir helfen.

Mit freundlichen Grüßen

ggb83
 
So einfach kanns gehen!

Mann muss nur ein bisschen "Spielen" hier der Code:


Sub tb_lagerort_keydown(ByVal sender As Object, _
ByVal e As KeyEventArgs)
'If e.KeyData = Keys.F9 Then
' Form1.tb_l1.Focus()
' Form1.tb_l1.SelectAll()
'End If
Dim s As Integer
Select Case e.KeyData
Case Keys.F9
Form1.tb_l1.Focus()
Form1.tb_l1.SelectAll()
e.Handled = True
Case Keys.Down
Debug.Print("Runter für Datagrid1 gedrückt!")
If Form1.DataGridView1.Rows.Count > 0 Then
Form1.DataGridView1.Select()
e.Handled = True
My.Computer.Keyboard.SendKeys("{DOWN}", True)
End If
e.Handled = True
Case Keys.Up
Debug.Print("Rauf für Datagrid1 gedrückt!")
If Form1.DataGridView1.Rows.Count > 0 Then
Form1.DataGridView1.Select()
e.Handled = True
My.Computer.Keyboard.SendKeys("{UP}", True)
End If
e.Handled = True
End Select
End Sub
 

Neue Beiträge

Zurück