为什么ListView.EnsureVisible()不起作用?

时间:2011-12-06 18:56:18

标签: vb.net listview

我正在尝试制作支持多线程的应用。它有几个不同的选项卡,我有一个选项卡,其中包含每个初始化操作的日志。当我更新我的日志时,我希望它滚动到底部。我正在使用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

为了测试它,我称之为一个简单的循环:

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

但它不会滚动到最后一项。为什么不滚动到底部,我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

尝试将Selected属性设置为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

或只是确保lstLogs控件具有焦点。

在这里讨论:Problem with Listview EnsureVisible