Группировка и сортировка папок и файлов в ListView - PullRequest
2 голосов
/ 26 сентября 2011

Я хотел бы отображать папки и файлы в ListView так же, как они отображаются в проводнике Windows, т. Е. Сначала папки, затем файлы и обе группы, отсортированные по алфавиту.

Сначала я подумал об использовании 2 ListViewGroup (один для папок и один для файлов), но не только не могу скрыть заголовок группы, он не активен, когда ListView находится в режиме списка.

Другим решением было бы сохранить 2 базовых списка (один для папок и один для файлов) и заполнить ListView из 2 списков (сначала папки, а затем файлы). Но это кажется немного неуклюжим, поскольку мне придется сортировать два списка и обновлять содержимое ListView каждый раз, когда пользователь сортирует ListView.

Кто-нибудь может предложить решение этой проблемы? Я чувствую, что есть простой ответ и / или что я что-то пропустил в элементе управления ListView ...

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

ОК, после еще нескольких поисков, вот как я это реализовал.

Я использовал пользовательские функции сортировки в виде списка (см., Как включить http://support.microsoft.com/kb/319401).

Единственное изменение - функция сравнения в ListViewColumnSorter. Если оба элемента X и Y имеют одинаковый тип (папка или файл), я возвращаю «нормальный» результат, основанный на сортировке имени элемента. И если нет, я возвращаю -1, если X является папкой и 1, если нет.

Таким образом, папки всегда стоят на первом месте, а папки и файлы сортируются в алфавитном порядке

Каждый элемент представления списка идентифицируется как папка или файл по свойству Tag, установленному при добавлении элементов в список.

0 голосов
/ 26 сентября 2011

Один из способов справиться с этим - использовать TreeView для папок (слева) и Listview для файлов (справа). Всякий раз, когда выбор изменяется в древовидной структуре, вы можете обновлять имена файлов в виде списка.

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