Дизайн пользовательского интерфейса Windows - поле со списком - PullRequest
4 голосов
/ 16 июля 2009

До сегодняшнего дня я не осознавал, что существует разница между списком (например, раскрывающимся списком выбора элемента управления HTML-формой) и «комбинированным окном», которое представляет собой комбинацию списка и текстовой записи. контроль. Таким образом, ComboBox позволяет пользователю ввести новое значение и, если это запрограммировано, добавит значение в список значений, отображаемых при нажатии.

Просто прочитав несколько книг по дизайну интерфейсов, я думаю, что хотя концепция звучит круто и в конечном итоге избавит меня от необходимости создавать другой интерфейс для «добавления» вариантов, я чувствую, что это может сбить с толку продвинутые пользователи, которые могут упустить тот факт, что вы можете вводить значения таким образом.

Есть ли у кого-нибудь мнение по поводу использования поля со списком и его преимуществами в отношении хороших принципов дизайна пользовательского интерфейса? Мое приложение должно использоваться многими людьми всех возрастных групп.

Ответы [ 3 ]

2 голосов
/ 16 июля 2009

Мэтт, вот некоторые детали, которые могут быть вам полезны, если вы продолжите.

Я использовал комбо-боксы в нескольких местах в моих формах именно так, как вы упомянули.

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

В моем случае у меня есть три следующих пункта, чтобы позаботиться обо всех вышеупомянутых функциях:

  1. Поле со списком с DropDownStyle = DropDown
  2. Кнопка сохранения
  3. Кнопка удаления

Функциональность выглядит следующим образом:

В поле со списком в дополнение к элементам, уже сохраненным пользователем, у меня есть элемент - Новый - вверху. Когда пользователь должен отредактировать / переименовать элемент, он должен выбрать элемент из комбинированного списка, ввести новое имя в комбинированном списке и нажать «Сохранить». Если пользователь хочет добавить новый элемент, он должен выбрать --New-- из комбо, ввести имя в комбо (это перезапишет --New--) и нажать Save Если пользователю необходимо удалить элемент, он должен просто выбрать элемент и нажать «Удалить»

Я реализовал событие SelectionChangeCommitted , а не SelectedIndexChanged , так как последнее запускает событие, если выбранный индекс устанавливается через код, тогда как первое только, когда пользователь выбирает элемент в поле со списком с экрана.

Кроме того, я сохранил переменную уровня формы под названием _selectedComboID , в которой хранится идентификатор выбранного в данный момент комбинированного элемента. Он устанавливается в обработчике событий SelectionChangeCommitted. Это потому, что если вам нужно переименовать запись в комбо, вы сначала выберите ее. В это время selectedIndex является правильным (тот, который вы выбрали). Затем, поскольку вам нужно переименовать его, вы отредактируете текст со списком и нажмите «Сохранить». Однако, так как вы отредактировали имя, оно теперь портится с выбранным индексом. Поэтому я сохраняю его в переменной перед тем, как пользователь сделает выбор.

В методе Save я проверил, совпадает ли _selectedComboID с идентификатором для --New--. Если да, код вставки запускается, иначе код редактирования. В обоих случаях необходимо проверить, что выбранное пользователем имя еще не существует, в дополнение к другим проверкам.

Если вы устанавливаете Sorted = true для вашего поля со списком, очень важно использовать SelectedItem во всем коде, а не SelectedValue. Это связано с тем, что когда вы устанавливаете сортировку как true для поля со списком, он портит выбранные значения. Вы можете обратиться к моему сообщению на Настройка выбранного элемента в ListBox без цикла для получения подробной информации.

Ух, это было здорово !!! Надеюсь, это поможет:)

0 голосов
/ 16 июля 2009

Эта страница на kdedevelopers.org была хорошо прочитана. Дайте мне посмотреть, смогу ли я подвести итог.

Listbox

+ Подходит для показа короткого списка
+ Показывает большинство параметров в любое время + Из этого следует, что он прекрасно работает, когда пользователь может выбрать несколько вариантов из списка
- Списки не поддерживают «добавление» в список вариантов выбора интуитивно

выпадающий

+ Хорошо для длинных списков. не позволяет большим спискам занимать слишком много места в интерфейсе пользователя.
- Показывает только одну выбранную опцию - варианты скрыты , если вы не нажмете кнопку раскрывающегося списка.
+ Позволяет пользователям, имеющим , возможность добавлять в список вариантов . Обычно имеет свойство стиля, где вы можете настроить, например, не допускать «сложения», если вы этого не хотите.

Другие не стесняются добавлять. Смиренное предложение: надеюсь, через комментарии. После этого оставленные комментарии могут быть перемещены в текст сообщения.

0 голосов
/ 16 июля 2009

Pro: легко добавлять новые опции (для пользователя)

Con: Легко добавлять новые опции (особенно позже, когда вы говорите об очистке данных, дублируете записи. По сути, тот же недостаток, когда вы разрешаете свободный ввод текста).

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