列表视图 - 超出列表视图边界的选择(上/下键时无自动滚动)

时间:2014-04-11 06:56:34

标签: vb.net listview scroll

让我们说,列表视图15中的500个项目随时可见,我遇到的问题是当达到第一个/最后一个项目在当前视图时/向下键选择超出列表视图边界,我看不到当前选择的内容。

我知道原因是ListView1_KeyDown代码,但我不得不放下/关闭密钥代码,否则从当前选择按下向上或向下键会跳到列表视图的第一项。

如果我没有解释这个问题,我会写一些图片。

enter image description here enter image description here enter image description here

    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 个答案:

答案 0 :(得分:1)

经过反复试验解决了这个问题。

这修复了它(在代码的向上键和向下键部分添加了行):

ListView1.Items(i).EnsureVisible()