ListView虚拟化要求 RetrieveVirtualItem事件或在OnRetrieveVirtualItem 提供有效的ListViewItem

问题描述

Winform/VB.NET环境下,用listview虚拟模式加载5万条数据,能够实现数据的加载。按住垂直滚动条下拖数据可以正常展示,但在单击垂直滚动条的下拉三角按钮时,就报告错误窗体了,错误描述如下:“ListView虚拟化要求RetrieveVirtualItem事件或在OnRetrieveVirtualItem方法中提供有效的ListViewItem”,有没有好的解决办法。如图:点击10几次继续后,垂直滚动条能正常向下移动,窗体并未崩溃。这个错误在调试环境下总是捕捉不到断点,但我预计错误出在RetrieveVirtualItem事件,相关listview虚拟模式的事件代码如下:PrivatemyCache1()AsListViewItemPrivatefirstItem1AsIntegerPrivateSubLV1_CacheVirtualItems(senderAsObject,eAsSystem.Windows.Forms.CacheVirtualItemsEventArgs)HandlesLV1.CacheVirtualItemsTryIfNot(myCache1IsNothing)AndAlsoe.StartIndex>=firstItem1AndAlsoe.EndIndex<=firstItem1+myCache1.LengthThenReturnEndIffirstItem1=e.StartIndexDimlengthAsInteger=e.EndIndex-e.StartIndex'+1indexesareinclusivemyCache1=NewListViewItem(length){}DimiAsIntegerFori=0TolengthmyCache1(i)=NewListViewItem(NewString(){_DT.Rows(i+firstItem1).Item("INAME").ToString,DT.Rows(i+firstItem1).Item("CARDNUM").ToString,_DT.Rows(i+firstItem1).Item("CASE_CODE").ToString,DT.Rows(i+firstItem1).Item("COURT_NAME").ToString,DT.Rows(i+firstItem1).Item("GIST_CID").ToString,DT.Rows(i+firstItem1).Item("REG_DATE").ToString,_DT.Rows(i+firstItem1).Item("GIST_UNIT").ToString,DT.Rows(i+firstItem1).Item("DUTY").ToString,DT.Rows(i+firstItem1).Item("PERFORMANCE").ToString,DT.Rows(i+firstItem1).Item("DISREPUT_TYPE_NAME").ToString,_DT.Rows(i+firstItem1).Item("PUBLISH_DATE").ToString})NextiCatchexAsExceptionMsgBox(ex.Message.ToString)EndTryEndSubPrivateSubLV1_RetrieveVirtualItem(senderAsObject,eAsSystem.Windows.Forms.RetrieveVirtualItemEventArgs)HandlesLV1.RetrieveVirtualItemTryIfNot(myCache1IsNothing)AndAlsoe.ItemIndex>=firstItem1AndAlsoe.ItemIndex<firstItem1+myCache1.LengthThene.Item=myCache1(e.ItemIndex-firstItem1)EndIfIfe.ItemIndex=myCache1.LengthThenmyCache1=NothingCatchexAsExceptionMsgBox(ex.Message.ToString)EndTryEndSub

有遇到的的同行吗?谢谢!

解决方案

解决方案二:
相同问题,我是在多线程中通过委托调用ListView虚拟化显示,问题有时候有,有时候没有,头疼死了
解决方案三:
这个问题没人碰到吗?球大神现身!
解决方案四:
RetrieveVirtualItem()要求e.Item始终有值,但是你只有部分情形下才有值,这是错误的。看的示例是怎么做的。

时间: 2024-08-22 11:59:22

ListView虚拟化要求 RetrieveVirtualItem事件或在OnRetrieveVirtualItem 提供有效的ListViewItem的相关文章

listview-android listView的点击事件效果问题

问题描述 android listView的点击事件效果问题 ListView的Item布局中放图片和文字,在点击图片和文字时显示不同的内容效果,要怎么实现这个?是在OnClickItem事件中设置,还是在adapter中直接设置,要用什么方法呢? 解决方案 adapter的getview中,直接实现图片和文字的点击事件,实现你要的效果. 解决方案二: 应该是在adapter里面具体设置 解决方案三: 在adapter的getview方法中找到你要设置的控件然后设置点击事件就可以了 解决方案四:

scrowview-Android中HorizontalScrollView和ListView的水平滑动事件冲突

问题描述 Android中HorizontalScrollView和ListView的水平滑动事件冲突 HorizontalScrollView中包含一个Fragment,Fragment里边有一个自定义的ListView,ListView是类似QQ可以水平滑动删除的自定义ListView,现在ScrowView和ListView出现水平滑动冲突,求大神帮助 解决方案 截断事件就OK了,你可以百度搜一下,android手势操作,截断事件

大叔也说Xamarin~Android篇~ListView里的Click事件并获取本行的其它元素

原文:大叔也说Xamarin~Android篇~ListView里的Click事件并获取本行的其它元素 我原创,我贡献,我是仓储大叔 本篇大叔原创,本着对技术的热爱去研究它,把成果分享给国人!大叔始终相信一句话:你只有选择一个感兴趣的工作,你才能更好的发挥你的潜力,而这一切都建立在你不断研究,不断钻研的前提下. Xamarin文章在网上比较少,而ListView相关的信息更好,有限的那么几个还都说的不清楚,只是告诉大家如何去完成按钮的事件,而在事件里,如何获取当前行的其它元素信息则没有说明,在网

listview的重写onInterceptTouchEvent事件没有响应up和move事件

问题描述 listview的重写onInterceptTouchEvent事件没有响应up和move事件 listview的重写onInterceptTouchEvent事件没有响应up和move事件 解决方案 应该是dispatch中没有调用onInterceptTouchEvent,直接调用了ontouchevent

Android ListView监听滑动事件的方法(详解)

ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监听事件,可以在监听三个Action事件发生时通过MotionEvent的getX()方法或getY()方法获取到当前触摸的坐标值,来对用户的滑动方向进行判断,并可在不同的Action状态中做出相应的处理 mListView.setOnTouchListener(new View.OnTouchLis

android listView 子控件事件错行处理

 package com.tailan.moms.adapter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import com.tailan.moms.activity.ApplicationActivity;

如何捕获 ListView Group 的鼠标事件?

问题描述 现有一ListView,使用GROUP分组方式显示数据问题1:如何在Group分组条上点击鼠标右键显示弹出菜单?问题2:分组条上的收缩/扩展按钮点击后没有反应,如何才能使它响应收缩/扩展命令?为避免误解,贴个图试试,望高手回答,谢谢! 解决方案 解决方案二:CodeProject上的源码,供楼主参考解决方案三:CodeProject和www.codeguru.com搜遍了,也没找到能实现类似功能的代码...解决方案四:有人知道吗?再加100分!解决方案五:UP需要重写ListView吧

listview里的button事件添加方法_实用技巧

1. 复制代码 代码如下: <asp:ListView ID="lvBalance" runat="server" > <LayoutTemplate> <div id="listDiv" style="width:100%;overflow-y:auto;"> <table border=0 cellpadding=0 cellspacing=0 style="float:

如何確定listView的滑動事件的結束?

问题描述 listView的一次滑動的結束判斷條件是什麼啊?我嘗試用scroller,但是會引起界面繪製錯誤. 解决方案 listView.setOnScrollListener(l):查该方法就知道了