Наиболее используемый формат выбора всех/отменить выбор всех флажков
Каков наилучший шаблон для выбора всех или снятия всех флажков. Может ли кто-нибудь придумать лучший способ получить его в этой форме:
![enter image description here]()
Ответы
Ответ 1
Я буду честен, мне никогда не нравилась идея использовать флажок для опции "выбрать все", даже если вы ее видите много. Это не один элемент, который нужно выбрать, это действие. И если вы выберете все, а затем начнете отменять выделение отдельных элементов в списке, статус "checked" флажка "Выбрать все" становится по своей сути запутанным. Я предпочитаю использовать простую, но очевидную ссылку/кнопку, которая переключает между "select all" и "unselect all" по мере ее нажатия. Невозможно сбить вас с толку, когда отдельные элементы были отменены, а результат нажатия кнопки никогда не вызывает сомнений. Исключительный характер операции делает ее вполне разумной для переключения назад и вперед (вместо того, чтобы использовать две всегда видимые кнопки: одну для выбора всех, одну для отмены выбора), так как вы находитесь на расстоянии не более двух кликов от желаемого поведения. И это визуально отделяет это "действие" от отдельных предметов, предотвращая разборки и различающее поведение.
Ответ 2
Если вы можете отформатировать диалог со списками, мне нравится метод "checkbox in the list list" (и большинство пользователей интуитивно знают, как его использовать).
![SelectAllCheckBox]()
Если вы не хотите использовать список, я думаю, что кнопка или гиперссылка (которая переключается с "Выбрать все" на "Выбрать None", будет работать лучше, чем еще один флажок, который трудно разглядеть среди всех других флажки. Кроме того, снятие флажка "проверить все" не обязательно приведет к "проверке нет" для пользователя.
Ответ 3
Просто установите флажок "Выбрать все" ближе к левой границе. Возможно, измените текст на что-то вроде "Все предыдущие игры" и т.д., Чтобы дать понять, что выбрано "все".
Ответ 4
Здесь логика для User Control в WinForms для реализации @nezroy ответ. Это позволяет вам указать InitialAction [один из SelectAll или DeselectAll].
Imports System.ComponentModel
''' <summary>
''' A control which allows the user to toggle back-and-forth
''' between selecting all of something, or de-selecting all of something.
''' </summary>
Public Class uscSelectDeselectAll
#Region "Events"
Public Event CurrentAction_Changed()
#End Region
#Region "Enums"
Public Enum SelectAction
SelectAll
DeselectAll
End Enum
#End Region
#Region "Module-level variables"
Private _initialAction As SelectAction
Private _currentAction As SelectAction
#End Region
#Region "Properties"
Public Property CurrentAction As SelectAction
Get
Return _currentAction
End Get
Private Set(value As SelectAction)
_currentAction = value
SetActionLinkText()
End Set
End Property
<Browsable(True)>
<EditorBrowsable(EditorBrowsableState.Always)>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Public Property InitialAction As SelectAction
Get
Return _initialAction
End Get
Set(value As SelectAction)
_initialAction = value
SetActionLinkText()
End Set
End Property
#End Region
#Region "Procedures"
Private Sub SetActionLinkText()
If _currentAction = SelectAction.SelectAll Then
llActionText.Text = "Select All"
ElseIf _currentAction = SelectAction.DeselectAll Then
llActionText.Text = "Deselect All"
Else
Throw New InvalidEnumArgumentException("Invalid SelectActionProvided.")
End If
End Sub
Private Sub ToggleAction()
If CurrentAction = SelectAction.SelectAll Then
CurrentAction = SelectAction.DeselectAll
ElseIf CurrentAction = SelectAction.DeselectAll Then
CurrentAction = SelectAction.SelectAll
Else
Throw New Exception("CurrentAction has the invalid value: " & CurrentAction.ToString())
End If
End Sub
#End Region
#Region "Event Handlers"
Private Sub llActionText_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles llActionText.LinkClicked
RaiseEvent CurrentAction_Changed()
ToggleAction()
End Sub
Private Sub uscSelectDeselectAll_Load(sender As Object, e As EventArgs) Handles Me.Load
CurrentAction = InitialAction
End Sub
#End Region
End Class
Ответ 5
Я бы сказал, что это самый интуитивный способ сделать выбор/отменить выбор всех. Но я также видел, что некоторые используют ссылку, но я бы предпочел это.