Подтвердить что ты не робот

Наиболее используемый формат выбора всех/отменить выбор всех флажков

Каков наилучший шаблон для выбора всех или снятия всех флажков. Может ли кто-нибудь придумать лучший способ получить его в этой форме:

enter image description here

4b9b3361

Ответ 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

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