Наиболее пригодный выбрать все / отменить выбор всего формата флажка - PullRequest
18 голосов
/ 07 февраля 2009

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

enter image description here

Ответы [ 5 ]

34 голосов
/ 07 февраля 2009

Честно говоря, мне никогда не нравилась идея использовать флажок для опции «выбрать все», хотя вы ее часто видите. Это не единственный предмет, который нужно выбрать, это действие. И если вы выберете все, а затем начнете отменять выбор отдельных элементов в списке, состояние «флажок» флажка «выбрать все» станет по сути запутанным. Я предпочитаю использовать простую, но очевидную ссылку / кнопку, которая переключается между «выбрать все» и «отменить выбор» при нажатии. Нет состояния, которое могло бы сбить вас с толку, когда отдельные элементы были отменены, и результат нажатия кнопки никогда не вызывает сомнений. Исключительный характер операции делает совершенно разумным переключение вперед и назад (вместо использования двух всегда видимых кнопок: одной для выбора всех, одной для отмены выбора всех), поскольку вы не более чем в двух щелчках от нужного поведения. И это визуально отделяет это «действие» от отдельных предметов, предотвращая ошибки и различая поведение.

4 голосов
/ 07 февраля 2009

Если вы можете отформатировать свой диалог со списками, мне нравится метод «флажок в заголовке списка» (и большинство пользователей интуитивно знают, как его использовать).

SelectAllCheckBox

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

1 голос
/ 07 февраля 2009

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

0 голосов
/ 25 февраля 2016

Вот логика для пользовательского элемента управления в 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
0 голосов
/ 07 февраля 2009

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

...