我有一个在虚拟模式下工作的列表视图,在 LargeIcons 视图中。检索很昂贵,所以我想询问所有可见项目的数据。如何获取可见项的起始索引和总数?
更新:我知道 CacheVirtualItems 事件。我们使用的第三方数据库需要大约 3 秒来检索一条记录,但需要大约 4 秒来检索一千条记录,所以我必须在大块中进行。我需要确保可见记录在我们检索的记录中,所以我需要知道可见项的起始索引和总数。如果这不可行,我将不得不找到一种解决方法(这可能涉及使用带有大量图像单元格的 DataGridView 来模仿 LargeIcons 视图),但如果可能的话,我想正确地执行此操作。
您可以迭代后续项目,检查它们的可见性,直到找到不可见的项目。这将为您提供可见项目的计数。
例如,类似:
for (int index = 0; index < list.Items.Count; index++)
{
if (list.ClientRectangle.IntersectsWith(item.GetBounds(ItemBoundsPortion.Entire)))
{
// Add to the list to get data.
}
else
{
// We got them all.
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定排序对此有何影响。