列表视图挂起并继续



如何使SuspendLayout和ResumeLayout在列表视图中正确工作。我在添加项目之前和之后添加了这些代码行,但在添加每个项目时,每个项目仍在显示。

感谢

  • 我的代码:

        Dim x As Integer
    Dim startTick As Integer = Environment.TickCount
    lstFiles.SuspendLayout()
    For x = 0 To UBound(cacheListArray)
        If cacheListArray(x) Like "*.txt" Then
            lstFiles.Items.Add(cacheListArray(x))
        End If
    Next
    lstFiles.ResumeLayout()
    MsgBox(Environment.TickCount - startTick)
    

我增加了2000个项目。这需要7秒。有人告诉我它应该比那个短很多。这是正确的吗?


新代码:

        Dim ListViewItemArray(-1) As ListViewItem
                ReDim Preserve ListViewItemArray(UBound(ListViewItemArray) + 1)
            ListViewItemArray(UBound(ListViewItemArray)).Text = file.Name
            ListViewItemArray(UBound(ListViewItemArray)).SubItems.Add(file.FullName)
            ListViewItemArray(UBound(ListViewItemArray)).SubItems.Add(file.Length)
            ListViewItemArray(UBound(ListViewItemArray)).SubItems.Add(file.CreationTime)
            ListViewItemArray(UBound(ListViewItemArray)).SubItems.Add(file.LastWriteTime)
            ListViewItemArray(UBound(ListViewItemArray)).SubItems.Add(file.LastAccessTime)
        lstFiles.Items.AddRange(ListViewItemArray)

没有添加任何内容。我做错了什么?

您使用了错误的方法。Suspend/ResumeeLayout()方法只适用于容器控件,您希望在不重新绘制子控件的情况下移动这些子控件。您永远不会给ListView任何子控件。

请改用Begin/EndUpdate()方法。

相关内容

最新更新