如何使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)
没有添加任何内容。我做错了什么?
答案 0 :(得分:0)
您使用的是错误的方法。 Suspend / ResumeLayout()方法仅适用于其子控件要移动的容器控件,而不会在执行此操作时重新绘制它们。你永远不会给ListView任何子控件。
改为使用Begin / EndUpdate()方法。