2010-01-24 51 views
4

哪个控件最适合显示巨大(300.000+)的文件名列表?Windows窗体控件 - 巨大的文件名列表

我试过DataGridView,但它似乎是矫枉过正,也很慢。

有更好的选择吗?

+0

您是否在“虚拟”模式下使用DataGridView进行了评估:http://msdn.microsoft.com/en-us/library/15a31akc.aspx? – BillW 2010-01-24 12:35:53

+0

也建议你在CodeProject上查看Phillip Piper的“一个更容易使用ListView”:http://www.codeproject.com/KB/list/ObjectListView.aspx这篇文章是2006年开始的,更新多次,现在支持一个虚拟模式,而Phillip仍在回应本月的评论和问题。 – BillW 2010-01-24 12:45:53

回答

1

标准ListView控件有一个专门为您的情况设计的virtual mode。我以前使用过一百万行列表,它能很好地完成这项工作。

这是一个真正的虚拟模式。换句话说,无论整个列表的大小如何,内存分配和列表总体时间都很低。这与DataGridView that really starts to slowdown不同,并在大型列表中使用内存。

使用虚拟模式的组:

VirtualListMode = true 
VirtualListSize= 300000 

(或任何大小的列表目前是)

然后处理RetrieveVirtualItem事件来填充从你的列表需求列表。您可能还需要处理CacheVirtualItems和SearchForVirtualItem事件。

0

您是否尝试过与报表样式ListView的?这是Windows本身在其文件浏览器中使用的控件。

0

继续来自gotch4的回答。 Here是CodeProject关于如何使用DataGridView进行分页的好文章。

4

无。

没有用户能够以有意义的方式处理单个300.000+条目列表。看起来你的设计有严重缺陷 - 你是否真的需要提交完整的清单?

考虑使用搜索框并让用户搜索文件名(使用Google et.al.等自动完成/建议)或为每个首字母(与大多数地址簿一样)创建单独的列表。或者找到另一种方法来减少用户必须选择的条目数量。

+2

-1我只知道有人会觉得需要发表自己的意见,而不是真的回答这个问题。有些情况下这是一个合理的方法,你怎么知道OP没有考虑其他选项?无论如何,标准的WinForms ListView具有专门用于显示大型(高达数百万)数据列表的虚拟模式。 – Ash 2010-01-25 02:08:26

+0

无用的响应,试图阻止某人编写不会在大型目录上爆炸的软件。 – 2014-05-10 02:07:56