簡體   English   中英

如何獲取在C#中ListView中顯示的第一項的索引

[英]How to Get the Index of the First Item Showing in ListView in C#

當列表可滾動時,有什么方法可以獲取當前顯示的第一項的索引?

我正在做一個帶有一些擴展的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%)時,決定加載char,但是ListView並未給出滾動條的絕對位置。

它確實有點黑,但也許可以完成工作:

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;
}

這不能直接解決滾動問題,但應根據您的要求找到第一個可見項目。 如果您的商品具有極其怪異(即非正方形)的形狀,則可能需要稍微更改旅行代碼。

根據您的要求,使用自定義滾動條實現ListView。 因此,您可以更好地控制滾動位置。 您可以根據滾動位置決定何時采取什么操作。 這可能是有幫助的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM