我尝试了{" Jonas"提供的another thread解决方案。它得到了一个TopItem索引,但是它并没有按预期工作,我因为我的团队而假设。我的列表视图是文件夹和文件,我的组是文件夹,Word文档,Excel文档,PowerPoint文档,Acrobat文档,然后是其他所有内容。
有40个文件夹,索引从0到39。
下一组是Word,前几个项目索引是52,57,60,61,64,73。这会让我相信索引是按顺序分配给列表视图的。
我滚动,以便我的第二个Word项目是顶部项目(索引57)。我发出刷新(确认索引为57)并更新列表视图。
更新结束后,在设置topitem之前,listview显示为空白。当前顶部项目为0,名称是第一个文件夹。我设置了顶部项目,顶部索引显示为386或大致是列表中的第85项。
获取和设置热门项目的代码
mMyItem = RealtopItem()
If Not ExpTree1.SelectedItem Is Nothing Then
lv1.Update()
End If
lv1.TopItem = mMyItem
RealTopItem代码
Public Function RealtopItem() As ListViewItem
Dim i As Integer = 0
While (i < lv1.Items.Count AndAlso Not lv1.ClientRectangle.Contains(lv1.Items(i).Bounds))
i = i + 1
End While
Return lv1.Items(i)
结束功能 正如一些人所建议的,即使设置两次topitem也行不通。我也尝试使用invalidate而不是Update。
此外,即使顶级项目是文件夹(索引与实际项目计数匹配),它也不起作用。
答案 0 :(得分:0)
这不是答案,但它是一个适用于我想要的解决方案。
基本上,我不需要重建listview。如果没有重建,滚动位置以及所选项目保持不变。我更新的项目没有反映它们的新名称,因此在重命名功能中,我将文本名称设置为新文件名应该是什么。
这完全符合我的需要。我不必重建列表视图,因为我没有添加任何文件。我需要为我删除的项目创建一个解决方案。