如何使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()方法。