如何获取 ListView 中的起始索引和可见项的数量?

Sim*_*mon 5 c# listview

我有一个在虚拟模式下工作的列表视图,在 LargeIcons 视图中。检索很昂贵,所以我想询问所有可见项目的数据。如何获取可见项的起始索引和总数?

更新:我知道 CacheVirtualItems 事件。我们使用的第三方数据库需要大约 3 秒来检索一条记录,但需要大约 4 秒来检索一千条记录,所以我必须在大块中进行。我需要确保可见记录在我们检索的记录中,所以我需要知道可见项的起始索引和总数。如果这不可行,我将不得不找到一种解决方法(这可能涉及使用带有大量图像单元格的 DataGridView 来模仿 LargeIcons 视图),但如果可能的话,我想正确地执行此操作。

Jef*_*tes 1

您可以迭代后续项目,检查它们的可见性,直到找到不可见的项目。这将为您提供可见项目的计数。

例如,类似:

        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)

我不确定排序对此有何影响。