当前位置:  开发笔记 > 编程语言 > 正文

如何异步填充虚拟模式下的ListView?

如何解决《如何异步填充虚拟模式下的ListView?》经验,为你挑选了1个好方法。

我想在列表视图中显示我们数据库中的记录 - 但检索可能需要很长时间.我可以使用RetrieveVirtualItem告诉我何时需要新的ListViewItem,添加一个虚拟项目,然后开始检索; 但是当数据库返回时我该如何处理记录呢?当ListView在VirtualMode中时,我无法更新ListView的Items集合.有没有办法告诉ListView重新加载项目?或者我可以保持对ListViewItem的引用并填充它?如果这些都不起作用,我怎么能异步地在虚拟模式下填充ListView?



1> Dave R...:

当ListView需要更新时,将调用RetrieveVirtualItem处理程序.如果您的数据尚未可用且您无法等待,那么您将不得不创建一个虚拟项目(不处理RetrieveVirtualItem将引发异常).

数据准备就绪后,您可以使控件无效 - 这将为每个可见项再次调用RetrieveVirtualItem.作为使整个控件无效的替代方法,您可以使用ListView控件的RedrawItems方法控制要重绘的项目,该方法在虚拟和常规模式下工作:

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.redrawitems.aspx

听起来好像值得下载你的记录,如果它需要一段时间.此外,如果您的数据库操作很昂贵,那么值得调查缓存ListItems(您需要处理的CacheVirtualItems事件):

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.cachevirtualitems.aspx

我希望这有帮助.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有