[英]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.