Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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_Winforms_Listview - Fatal编程技术网

C# 如何在虚拟模式下仅绘制某些ListView项?

C# 如何在虚拟模式下仅绘制某些ListView项?,c#,.net,winforms,listview,C#,.net,Winforms,Listview,C#:如何在虚拟模式下仅绘制某些ListView项 我正在尝试创建一个类似过滤器的功能,以便在listview中使用,这样,如果用户从0-5中选择一个imageindex,它将在listview项目中循环,并且只使具有正确图像索引的项目显示,而其他项目将隐藏。我将如何继续创造这样一个惯例 如果您已经在使用网格的虚拟模式,您知道列表中显示的所有项目都是从列表的“RetrieveVirtualItem”事件请求的。这意味着您应该已经有一个对象数组作为列表项的后一层(前一层)。为了应用所需的过滤器,只

C#:如何在虚拟模式下仅绘制某些ListView项


我正在尝试创建一个类似过滤器的功能,以便在listview中使用,这样,如果用户从0-5中选择一个imageindex,它将在listview项目中循环,并且只使具有正确图像索引的项目显示,而其他项目将隐藏。我将如何继续创造这样一个惯例

如果您已经在使用网格的虚拟模式,您知道列表中显示的所有项目都是从列表的“RetrieveVirtualItem”事件请求的。这意味着您应该已经有一个对象数组作为列表项的后一层(前一层)。为了应用所需的过滤器,只需为上述环境操纵事件处理程序,并使用保存过滤器的外部变量,只返回满足条件的项


如果您需要更多详细信息,请告诉我,也许可以为我提供一些代码来专门帮助您,

这正是我想做和尝试的,但当我尝试仅从缓存数组变量ListViewItems[]检索特定项时,我收到一个错误。我有点困惑如何继续下去,因为我认为如果事件不返回对象,它将返回异常,那么我如何使它忽略我不想显示的对象,这样它就不会为这些对象触发事件?您能详细说明它抛出了什么错误吗?我认为您有点误解:事件不会针对您在更改列表中的每个ListViewItem触发。该事件由列表为其必须显示的列表的每个位置触发。因此,每次触发事件时,您都需要提供数组中的下一项,如果没有其他项可用,则不提供任何内容。因此,我应该创建另一个ListViewItem数组还是仅创建一个int数组来跟踪哪个索引我只希望从RetrieveVirtualItem事件中检索回listview?因此,在将开始过滤的按钮中,我首先应该做什么,以便只为我希望从arrListViewItemCache[]显示的项目触发RetrieveVirtualItem?当我处理完过滤视图后,我将如何重新绘制它们,以便它们再次显示在listview中?通过使用失效方法?