2010-01-24 25 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