2010-05-07 1 views
1

У меня есть список устройств, которые мне нужно фильтровать в соответствии с параметрами, выбранными пользователем. Один из таких вариантов - охлаждение: когда пользователь выбирает охлаждение, отображаются только устройства с охлаждением. Если охлаждение не выбрано, отображаются все устройства (с охлаждением или без него).Какой контроль использовать

Интересно, какой контроль я лучше всего использую для этого. У меня такое ощущение, что А Флажок не хороший контроль, поскольку он представляет собой:

Нет охлаждения (снят)/только охлаждение (проверено)

в то время как я хочу

охлаждения и нет охлаждение (непроверенный)/ только охлаждение (проверено).

Какой контроль лучше всего использовать здесь?

Спасибо.

ответ

1

Я вижу три варианта, в порядке убывания предпочтения:

  • Используйте флажок с тремя состояниями (один, который может быть серым цветом), используя ThreeState property. Главное преимущество здесь - меньше беспорядка, меньше чтения и меньше кликов. Если в начале они серые, пользователю будет ясно, что это состояние возможно, а отклонение от обычного поведения флажка не должно быть большой проблемой.

  • Используйте раскрывающийся список с опциями «Да», «Нет» и «Не волнует». Если некоторые или все варианты будут определенными «Да» или «Нет» изначально, это может быть лучшим вариантом.

  • Используйте сетку переключателей с тремя колонками. Уродливо, и нужно подумать, чтобы понять это. Я бы этого не сделал.

+0

Я боялся использовать тристатный флажок, потому что я думаю, что люди не знают об этом, но по умолчанию он по умолчанию в сером состоянии действительно может работать. – Tarscher

+0

Чтобы проверить это, вы всегда можете провести некоторое удобство для использования в коридоре. http://en.wikipedia.org/wiki/Usability_testing#Hallway_testing – Thomas

+0

Проблема с tristate cheboc aproach заключается в том, что у меня есть только 2 состояния (все/да), а не (все/да/нет). Я должен будет отключить никакое состояние программно. – Tarscher

1

Не забывайте, что класс .NET Флажок может быть установлен, чтобы иметь три состояния

CheckBox.ThreeState = TRUE; 

редактировать Это дает вам истинно или ложно для CheckBox.Checked и установлен, снят или неопределенными для CheckBox.CheckState ,

1

Флажок - правильный контроль. Вам просто нужно правильно обозначить его: «Включить только устройства: [] с охлаждением». Для меня это кажется однозначным, что снятие флажка означает применение фильтра и включение обоих устройств с охлаждением и без него. В общем, пользователи интерпретируют пробел, в том числе непроверенный, как «не запрашивают/фильтруют по этому критерию», а не как «инвертируют этот критерий фильтра запросов».

Если вы не уверены, используйте радиокнопки (или выпадающий список, если пространство плотно): «Включить только устройства:() При охлаждении() с охлаждением или без него».

Если вы хотите включить опцию фильтрации без охлаждения, то вы должны использовать радио или выпадающий список: «Включить только устройства:() При охлаждении() Без охлаждения.«Точно так же, если вам нужно показать более двух состояний, вы должны использовать радиокнопки или выпадающий список:« Включить только устройства:() с охлаждением,() без охлаждения, () С охлаждением или без него ».

Вы правы, что использование флажка tri-state будет путать. Смешанное состояние используется для обозначения «некоторые да, некоторые нет», а не «как да, так и нет». Рекомендации по взаимодействию Windows UX специально запрещают использование смешанного состояния флажка в качестве третьего состояния для одного элемента (в этом случае вы фильтруете) или разрешить пользователям выбирать смешанное состояние (pg49).

В целом этого следует избегать.