.NET:ListView的TopItem属性失败,并显示“ShowGroups”

时间:2014-10-07 13:25:48

标签: listview scrollbar

我尝试了{" 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。

此外,即使顶级项目是文件夹(索引与实际项目计数匹配),它也不起作用。

1 个答案:

答案 0 :(得分:0)

这不是答案,但它是一个适用于我想要的解决方案。

基本上,我不需要重建listview。如果没有重建,滚动位置以及所选项目保持不变。我更新的项目没有反映它们的新名称,因此在重命名功能中,我将文本名称设置为新文件名应该是什么。

这完全符合我的需要。我不必重建列表视图,因为我没有添加任何文件。我需要为我删除的项目创建一个解决方案。