如何获取C#中ListView中显示的第一个项目的索引

时间:2015-07-25 04:24:07

标签: c# listview

当列表可滚动时,有没有办法获取当前显示的第一个项目的索引?

我正在制作带有一些扩展名的CharMap,并发现ListView不能包含64k项目(参见下面的代码)

        for (var i = char.MinValue; i < char.MaxValue; i++)
        {
            var c = Convert.ToChar(i);
            if (!char.IsControl(c))
                lv1.Items.Add(""+c);
        }

因此决定在滚动处于某些适当的点(即第一个/最后15%)时加载字符,但ListView不会给出滚动条的绝对位置。

2 个答案:

答案 0 :(得分:1)

它确实感觉有点hackish,但也许它会起作用:

int getFirstVisibleItem(ListView lv)
{
    ListViewHitTestInfo HI;
    for (int i = 0; i < Math.Min(lv.ClientSize.Width, lv.ClientSize.Height); i += 3)
    {
        HI = lv.HitTest(i, i);
        if (HI.Item != null) return HI.Item.Index;
    }
    return -1;
}

这不会直接帮助您滚动问题,但应该找到您提出的第一个可见项目。如果你的物品有非常奇怪的(即非方形)形状,你可能想稍微改变一下travesal代码..

答案 1 :(得分:-1)

根据您的要求,使用自定义滚动条实现ListView。因此,您可以更好地控制滚动位置。您可以根据滚动位置决定何时执行操作。这可能会有所帮助Code