ListView.CacheVirtualItems 事件    
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public:
 event System::Windows::Forms::CacheVirtualItemsEventHandler ^ CacheVirtualItems;
	public event System.Windows.Forms.CacheVirtualItemsEventHandler CacheVirtualItems;
	public event System.Windows.Forms.CacheVirtualItemsEventHandler? CacheVirtualItems;
	member this.CacheVirtualItems : System.Windows.Forms.CacheVirtualItemsEventHandler 
	Public Custom Event CacheVirtualItems As CacheVirtualItemsEventHandler 
	事件类型
示例
下面的代码示例演示了此成员的用法。 在此示例中,事件处理程序会进行检查以确保确实有必要刷新缓存,然后重新生成缓存。 此代码示例是为 属性提供的更大示例的 VirtualMode 一部分。
//Manages the cache.  ListView calls this when it might need a 
//cache refresh.
void listView1_CacheVirtualItems(object sender, CacheVirtualItemsEventArgs e)
{
    //We've gotten a request to refresh the cache.
    //First check if it's really neccesary.
    if (myCache != null && e.StartIndex >= firstItem && e.EndIndex <= firstItem + myCache.Length)
    {
        //If the newly requested cache is a subset of the old cache, 
        //no need to rebuild everything, so do nothing.
        return;
    }
    //Now we need to rebuild the cache.
    firstItem = e.StartIndex;
    int length = e.EndIndex - e.StartIndex + 1; //indexes are inclusive
    myCache = new ListViewItem[length];
    
    //Fill the cache with the appropriate ListViewItems.
    int x = 0;
    for (int i = 0; i < length; i++)
    {
        x = (i + firstItem) * (i + firstItem);
        myCache[i] = new ListViewItem(x.ToString());
    }
}
'Manages the cache.  ListView calls this when it might need a 
'cache refresh.
Private Sub listView1_CacheVirtualItems(ByVal sender As Object, ByVal e As CacheVirtualItemsEventArgs) Handles listView1.CacheVirtualItems
    'We've gotten a request to refresh the cache.
    'First check if it's really neccesary.
    If Not (myCache Is Nothing) AndAlso e.StartIndex >= firstItem AndAlso e.EndIndex <= firstItem + myCache.Length Then
        'If the newly requested cache is a subset of the old cache, 
        'no need to rebuild everything, so do nothing.
        Return
    End If
    'Now we need to rebuild the cache.
    firstItem = e.StartIndex
    Dim length As Integer = e.EndIndex - e.StartIndex + 1 'indexes are inclusive
    myCache = New ListViewItem(length) {}
    'Fill the cache with the appropriate ListViewItems.
    Dim x As Integer = 0
    Dim i As Integer
    For i = 0 To length
        x = (i + firstItem) * (i + firstItem)
        myCache(i) = New ListViewItem(x.ToString())
    Next i
End Sub
	注解
仅当 为 true时VirtualMode,才会发生此事件。 处理此事件允许 ListView 更新缓存中保存的项信息,使其随时可用。 这可以提高大型列表或项计算成本高昂的列表的性能。
有关处理事件的详细信息,请参阅 处理和引发事件。