/ / Listview - избор извън границите на списъците (без клавиши за автоматично превъртане при нагоре / надолу) - vb.net, listview, scroll

Listview - избор извън границите на списъците (без клавиши за автоматично набиране при нагоре / надолу) - vb.net, listview, scroll

Нека кажем, че от 500 позиции в списък 15 са видими по всяко време, проблемът, който имам е, когато първи / последен елемент в текущия изглед се достига с избиране на клавиши нагоре / надолу, излиза извън границите на списъците и не мога да видя какво точно се избира.

Знам, че причината за това е кода ListView1_KeyDown, но трябваше да поставям нагоре / надолу кода на кода, тъй като иначе натискането на клавиша за нагоре или надолу от текущия подбор би прескочило до първия елемент от списък.

Ще сложа няколко изображения, ако не обясня това право.

въведете описанието на изображението туквъведете описанието на изображението тук въведете описанието на изображението тук

    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

Опитах всичко в имотите и не намерих решението.

Отговори:

1 за отговор № 1

Решил го с опит и грешка.

Това го фиксира (добавен ред в клавиша за нагоре и надолу ключ на кода):

ListView1.Items(i).EnsureVisible()