/ / Listview - wybór poza granicami listy (bez automatycznego przewijania przy klawiszach góra / dół) - vb.net, listview, scroll

Widok listy - wybór poza granicami listy (bez automatycznego przewijania przy klawiszach w górę / w dół) - vb.net, listview, scroll

Powiedzmy, że z 500 pozycji w widoku listy 15 jest widocznych w dowolnym czasie, problem, który mam, to kiedy pierwszy / ostatni element w bieżącym widoku jest osiągany przy użyciu klawiszy strzałek w górę / w dół wykracza poza granice listview i nie widzę tego, co jest aktualnie zaznaczone.

Wiem, że powodem tego jest kod ListView1_KeyDown, ale musiałem podać kod klawisza góra / dół, ponieważ w przeciwnym razie naciśnięcie klawisza w górę lub w dół z bieżącego wyboru spowoduje przejście do pierwszego elementu listy.

Dodam kilka zdjęć, jeśli nie wyjaśniam tego dobrze.

wprowadź opis obrazu tutajwprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

    Private Sub ListView1_KeyDown(sender As Object, e As KeyEventArgs) Handles ListView1.KeyDown

On Error Resume Next
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
TextBox3.Text = ListView1.SelectedItems(0).SubItems(0).Text
TextBox4.Focus()

ElseIf e.KeyCode = Keys.Down Then
For i As Integer = 0 To ListView1.Items.Count - 1
If ListView1.Items(i).Selected AndAlso i <>
ListView1.Items.Count - 1 Then
ListView1.Items(i).Selected = False
ListView1.Items(i + 1).Selected = True
ListView1.Focus()
e.Handled = True

Exit For
End If
Next
ElseIf e.KeyCode = Keys.Up Then
For i As Integer = 0 To ListView1.Items.Count - 1
If ListView1.Items(i).Selected AndAlso i <>
ListView1.Items.Count - 1 Then
ListView1.Items(i).Selected = False
ListView1.Items(i - 1).Selected = True
ListView1.Focus()
e.Handled = True
Exit For
End If
Next
End If

End Sub

Próbowałem wszystkiego we właściwościach i nie znalazłem rozwiązania.

Odpowiedzi:

1 dla odpowiedzi № 1

Rozwiązał go metodą prób i błędów.

Naprawiono to (dodawano wiersz w górnej i dolnej części kodu):

ListView1.Items(i).EnsureVisible()