Waarom werkt ListView.EnsureVisible () niet?

Ik probeer een app te maken die Multi-Threading ondersteunt. Het heeft verschillende tabbladen en ik heb één tabblad met een log van elke geïnitialiseerde bewerking. wanneer ik mijn log update, wil ik dat het naar beneden scrolt. Ik gebruik het besturingselement ListView .

Public Sub SubmitLog(ByVal Data As String)

  If Data <> "" Then
    With lstLogs
      .Items.Add(New ListViewItem(New String(1) {Date.Now.ToString(), Data}))
      .Items.Item(.Items.Count - 1).EnsureVisible()
    End With
  End If

End Sub

Om het te testen noem ik een eenvoudige lus:

 For I As Integer = 0 To 50
   SubmitLog(Path.GetRandomFileName())
 Next

Maar het scrolt niet naar het laatste item. Waarom scrolt het niet naar de bodem en hoe kan ik dat laten gebeuren?

0

1 antwoord

Probeer de eigenschap Geselecteerd in te stellen op true:

If Data <> "" Then
  With lstLogs
    .Items.Add(New ListViewItem(New String(1) {Date.Now.ToString(), Data}))
    .Items.Item(.Items.Count - 1).Selected = True
    .Items.Item(.Items.Count - 1).EnsureVisible()
  End With
End If

of zorg er gewoon voor dat het besturingselement lstLogs focus heeft.

Discussed here: Problem with Listview EnsureVisible

1
toegevoegd