回答
標準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. 帶窗口的Windows窗體控件
- 5. 關於列表視圖控件(windows窗體)的問題
- 6. Windows窗體:用戶控件和事件
- 7. .Net C#windows窗體,列表框控件問題
- 8. Windows窗體用戶控件問題
- 9. Windows窗體的WYSIWYG Markdown控件?
- 10. Windows窗體中的控件數量
- 11. Windows窗體中的WPF控件?
- 12. .NET中的ThreadExceptionEventHandler Windows窗體控件
- 13. DevExpress Windows窗體的FileUpload控件
- 14. SqlProfiler UI的最佳Windows窗體控件
- 15. Windows窗體上的甘特圖控件
- 16. 繼承C#中的Windows窗體控件
- 17. Windows窗體/控件中* .resx文件的相關性是什麼?
- 18. 將Windows窗體列表框保存爲文本文件C#
- 19. 錯誤「無法創建組件‘控件名稱’」當拖動Windows窗體用戶控件到窗體
- 20. 自動調整Windows窗體控件的大小
- 21. 如何正確調整Windows窗體控件的大小?
- 22. 防止重新繪製Windows窗體調整大小的控件
- 23. 關閉Windows窗體中的控件中的所有窗體
- 24. 調整窗體大小的控件
- 25. 巨大的main.cs文件
- 26. 巨大的文件上傳
- 27. 動態移除/添加Windows窗體窗體上的控件
- 28. 帶有窗體的大文件大小?
- 29. 用戶控件與Windows窗體
- 30. 如何轉移windows窗體控件?
您是否在「虛擬」模式下使用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