回答
标准ListView控件有一个专门为您的情况设计的virtual mode。我以前使用过一百万行列表,它能很好地完成这项工作。
这是一个真正的虚拟模式。换句话说,无论整个列表的大小如何,内存分配和列表总体时间都很低。这与DataGridView that really starts to slowdown不同,并在大型列表中使用内存。
使用虚拟模式的组:
VirtualListMode = true
VirtualListSize= 300000
(或任何大小的列表目前是)
然后处理RetrieveVirtualItem事件来填充从你的列表需求列表。您可能还需要处理CacheVirtualItems和SearchForVirtualItem事件。
设置分页并限制DataGrid显示的行数。您可以添加组合框以在页面之间跳转。这是一个标准的解决方案。
也看到这个帖子https://stackoverflow.com/questions/2125963/need-help-in-gridview-and-table
您是否尝试过与报表样式ListView的?这是Windows本身在其文件浏览器中使用的控件。
继续来自gotch4的回答。 Here是CodeProject关于如何使用DataGridView进行分页的好文章。
无。
没有用户能够以有意义的方式处理单个300.000+条目列表。看起来你的设计有严重缺陷 - 你是否真的需要提交完整的清单?
考虑使用搜索框并让用户搜索文件名(使用Google et.al.等自动完成/建议)或为每个首字母(与大多数地址簿一样)创建单独的列表。或者找到另一种方法来减少用户必须选择的条目数量。
-1我只知道有人会觉得需要发表自己的意见,而不是真的回答这个问题。有些情况下这是一个合理的方法,你怎么知道OP没有考虑其他选项?无论如何,标准的WinForms ListView具有专门用于显示大型(高达数百万)数据列表的虚拟模式。 – Ash 2010-01-25 02:08:26
无用的响应,试图阻止某人编写不会在大型目录上爆炸的软件。 – 2014-05-10 02:07:56
你可能想看看ObjectListView,特别是VirtualObjectListView:
http://objectlistview.sourceforge.net/cs/index.html
我在商业使用之前,忘记了手已经发布了什么许可下,所以你可能想看看那个应用。
- 1. Windows窗体控件
- 2. Windows窗体拖动控件
- 3. Windows窗体:用户控件和事件
- 4. .Net C#windows窗体,列表框控件问题
- 5. Windows窗体用户控件问题
- 6. 继承C#中的Windows窗体控件
- 7. Windows窗体上的甘特图控件
- 8. Windows窗体中的控件数量
- 9. Windows窗体的WYSIWYG Markdown控件?
- 10. Windows窗体/控件中* .resx文件的相关性是什么?
- 11. 将Windows窗体列表框保存为文本文件C#
- 12. 错误“无法创建组件‘控件名称’”当拖动Windows窗体用户控件到窗体
- 13. 自动调整Windows窗体控件的大小
- 14. 如何正确调整Windows窗体控件的大小?
- 15. 调整窗体大小的控件
- 16. 巨大的main.cs文件
- 17. 动态移除/添加Windows窗体窗体上的控件
- 18. 带有窗体的大文件大小?
- 19. C#锁定一个Windows窗体控件
- 20. 如何使Windows窗体控件只读?
- 21. 如何转移windows窗体控件?
- 22. Windows窗体WebBrowser控件 - 支持Javascript?
- 23. 用户控件与Windows窗体
- 24. Windows窗体 - 自定义用户控件
- 25. 获得运行Windows窗体控件
- 26. Windows窗体分隔符控件
- 27. 使Windows窗体控件只读和IDisposable
- 28. 在Windows窗体控件上使用RectVisible
- 29. C#Windows窗体图表控件 - 绑定csv文件中的多个y值
- 30. 在WebBrowser控件(Windows窗体)中显示多个PDF文件
您是否在“虚拟”模式下使用DataGridView进行了评估:http://msdn.microsoft.com/en-us/library/15a31akc.aspx? – BillW 2010-01-24 12:35:53
也建议你在CodeProject上查看Phillip Piper的“一个更容易使用ListView”:http://www.codeproject.com/KB/list/ObjectListView.aspx这篇文章是2006年开始的,更新多次,现在支持一个虚拟模式,而Phillip仍在回应本月的评论和问题。 – BillW 2010-01-24 12:45:53