Лучший способ выбрать из списка - разве два списка не устаревают? - PullRequest
3 голосов
/ 23 декабря 2009

Сколько раз мы видели этот тип селектора:

Селектор списка http://geekswithblogs.net/images/geekswithblogs_net/dotNETvinz/MoveItemsListBox.jpg

Я как раз собирался начать создавать это в приложении WinForms, когда подумал, что у других могут быть какие-то идеи, как сделать это лучше. Нам нужно его отсортировать - поэтому правому списку понадобятся кнопки вверх / вниз. Но это похоже на старую школу. Мне нравятся компоненты devexpress, и я подумал спросить их, не рассмотрят ли они вопрос о добавлении компонента, который обрабатывает эту функциональность, с удобным интерфейсом.

Я думаю, что графическое представление объектов и графическое представление списков - это был бы более интуитивный способ перемещения элементов.

Кто-нибудь видел такой проект с открытым исходным кодом?

Ответы [ 4 ]

3 голосов
/ 23 декабря 2009

Если CheckListBox не будет достаточно (и обычно будет ), тогда «современный» подход заключается в использовании ListView или аналогичного компонента со столбцом «Transfer». Визуализируйте кнопку в этом столбце, по одной для каждой строки, чтобы всего один щелчок мыши переместил элемент из одного в другой.

Вы видите это везде в Vista, обычно с гиперссылками, а не с кнопками. Вместо того, чтобы щелкнуть элемент и затем выбрать действие, вы щелкаете действие на уровне элемента.

Я бы не стал переборщить с гладкостью, поскольку это может ухудшить функциональность, но экран двойного списка определенно устарел.

Кроме того, если имеется очень большой объем данных для управления, это помогает обеспечить прогрессивный поиск внизу одного или обоих списков.

1 голос
/ 23 декабря 2009

Вы можете объединить два списка в одно с помощью групп (флаг LVGF_GROUPID): одна группа для выбранного и одна для не выбранного.

Вы также можете вносить изменения в членство в группах с помощью перетаскивания между ними. Таким образом, одиночное перетаскивание может переместить элемент в другую группу в соответствующую позицию, сохранив большинство / все остальные кнопки.

Кроме того, в нижней части каждой группы может быть один псевдоэлемент с текстом справки (т. Е. "Перетащите элементы сюда ..."), который отображается только в случае необходимости.

1 голос
/ 23 декабря 2009

Разрешить пользователям перетаскивать элементы в / из списка 2, а также перетаскивать для изменения порядка в списке 2. (Все элементы, перетаскиваемые из списка 2 и выпадающие в любом месте за пределами списка, возвращаются в список 1 в правильном месте в списке в алфавитном или естественном порядке.)

1 голос
/ 23 декабря 2009

Я сделал этот тип выделения, используя (по существу) один CheckListBox, который отображает каждый элемент в виде изображения. Часть изображения выглядит как светодиод, который горит (ярко), если элемент выбран, или выключен (темно), если он не выбран.

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

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