Контроль Windows Forms - Огромный список имен файлов - PullRequest
4 голосов
/ 24 января 2010

Какой элемент управления лучше всего подходит для отображения огромного (300.000+) списка имен файлов?

Я пробовал DataGridView, но, похоже, это излишне, а также медленно.

Есть ли лучшие альтернативы?

Ответы [ 6 ]

4 голосов
/ 24 января 2010

Отсутствует.

Ни один ПОЛЬЗОВАТЕЛЬ не сможет обработать один и тот же список из 300 000+ записей. Похоже, ваш дизайн серьезно испорчен - вам действительно нужно представить полный список?

Подумайте об использовании окна поиска и позвольте пользователям искать имена файлов (используйте автозаполнение / предложения, такие как Google et.al.) или создайте отдельный список для каждой начальной буквы (как это делают большинство адресных книг). Или найдите другой способ уменьшить количество записей, из которых пользователь должен выбрать.

1 голос
/ 25 января 2010

Стандартный элемент управления ListView имеет виртуальный режим , разработанный специально для вашей ситуации. Ранее я использовал его со списком миллионов строк, и он хорошо справляется со своей работой.

Это настоящий виртуальный режим. Другими словами, выделение памяти и время заполнения списка остаются низкими, независимо от размера общего списка. Это не похоже на DataGridView, который действительно начинает замедлять и использовать память в больших списках.

Для использования виртуального режима установите:

VirtualListMode = true
VirtualListSize= 300000 

(или любой другой размер вашего списка)

Затем обработайте событие RetrieveVirtualItem, чтобы заполнить список по требованию из вашего списка. Вам также может понадобиться обработать события CacheVirtualItems и SearchForVirtualItem.

0 голосов
/ 24 января 2010

Возможно, вы захотите проверить ObjectListView, в частности VirtualObjectListView:

http://objectlistview.sourceforge.net/cs/index.html

Я забыл, под какой лицензией она была выпущена, так что вы можете посмотреть ее перед использованием в коммерческих приложениях.

0 голосов
/ 24 января 2010

Исходя из ответа gotch4. Здесь - хорошая статья CodeProject о том, как выполнять разбиение на страницы с помощью DataGridView.

0 голосов
/ 24 января 2010

Вы пробовали ListView со стилем отчета? Этот элемент управления используется Windows изначально в своих файловых браузерах.

0 голосов
/ 24 января 2010

Настройка нумерации страниц и ограничение количества строк, отображаемых в DataGrid. Вы можете добавить комбинированный список для перехода между страницами. Это стандартное решение.

см. Также этот пост https://stackoverflow.com/questions/2125963/need-help-in-gridview-and-table

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...