滚动期间列表视图中可见项目的索引

本文关键字:项目 索引 列表 视图 滚动 | 更新日期: 2023-09-27 18:26:59

你能告诉我如何在滚动过程中获得listview中第一个可见项目的索引吗。假设我在listview中有100个项目,而窗口中只有5个项目可见,因为它太小了,然后我开始滚动项目,以便能够看到listview中当前可见的5个项目中的第一个(或任何一个)的索引。

谢谢。

滚动期间列表视图中可见项目的索引

有一个TopItem属性,它返回控件中的第一个可见项。

您可以将View模式设置为List或Details。从这一点上,您可以获得顶部项目,然后将其更改回以前的视图模式,例如LargeIcon:

listview1.View = View.List;
ListViewItem topitem = listview1.TopItem;
listview1.View = View.LargeIcon;
    public int firstVisible(ListView lv)
    {
        int i = 1;
        try
        {
            while (lv.GetItemRect(i).X != 0) i++;
        }
        catch
        {
            return 0;
        }
        int rowWidth = i;
        int rowHeight = lv.GetItemRect(i).Y - lv.GetItemRect(0).Y;
        return -((int)lv.GetItemRect(0).Y / rowHeight) * rowWidth;
    }

这将返回列表视图的第一个可见索引。我不知道是否有什么东西可以打破它,它对我正在做的事情有效。我只用LargeIcons测试过。它的好处在于,它不必遍历每一个项目,只需从第一个项目的位置就可以计算出来。