Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:如何使其能够决定要在虚拟模式下将哪些项目专门绘制到listview中?_C#_.net_Listview - Fatal编程技术网

C#:如何使其能够决定要在虚拟模式下将哪些项目专门绘制到listview中?

C#:如何使其能够决定要在虚拟模式下将哪些项目专门绘制到listview中?,c#,.net,listview,C#,.net,Listview,来自相同名称、不同帐户的完全相同 @乔纳森:请强化你的问题,而不是输入新的副本 我试图在listview对象中实现一种过滤机制(在虚拟模式下)。我得到建议,不要在retrieve_item事件中返回我不想显示的有问题的项,但当我不返回任何少于listview项的项时(从包含所有有问题的listview项的listviewitems数组中缓存)我收到一个异常错误,表示我必须在RetrieveVirtualItem事件中返回一个有效的ListViewItem,就像它在msdn中读取一样 资料来源:

来自相同名称、不同帐户的完全相同

@乔纳森:请强化你的问题,而不是输入新的副本


我试图在listview对象中实现一种过滤机制(在虚拟模式下)。我得到建议,不要在retrieve_item事件中返回我不想显示的有问题的项,但当我不返回任何少于listview项的项时(从包含所有有问题的listview项的listviewitems数组中缓存)我收到一个异常错误,表示我必须在RetrieveVirtualItem事件中返回一个有效的ListViewItem,就像它在msdn中读取一样

资料来源:

那么,当我调用自己的一个方法时,我如何才能决定只显示类似于[0]、[5]和[11]的项,比如listviewitems[25]的列表

当我的任务完成后,我希望过滤器可以用来做什么,我想把所有的原始项目恢复到listview中,我怎么能实现这样的功能呢

  // Initialized with 25 listviewitem & subitems objects later during the programs runtime.
  public ListViewItem[] lviCache;

    private void lvListView_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
    {
            e.Item = lviCache[e.ItemIndex];
    }

    void UnfilterlvItems()
    { 
        // How would I revert it back so that it draws all original items
        // from my listviewitem[] array back to normal to display
        // all 25 objects again?
    }

    void FilterlvItems()
    { 
        // What would I be putting in here so that I can fire off the
        // retrievevirtualitem events and only decide which items I want
        // display for the time being? {0, 5, 11 }
    }
您需要这样做:

  • 为要显示的项的索引构建一个数组,
    filteredItems
    。在您的示例中,这将类似于
    [0,5,11]
  • 告诉控件显示3项:
    resultsList.VirtualListSize=filteredItems.Count
  • RetrieveVirtualItem
    中,从数组中返回项目:

    返回lviCache[filteredItems[ev.ItemIndex]