最常用的是选择全部/取消选择所有复选框格式

时间:2009-02-06 21:55:51

标签: usability

选择全部或取消选中所有复选框的最佳模式是什么。有人能想出一种更好的方式来获得这种形式:

enter image description here

5 个答案:

答案 0 :(得分:34)

我会说实话,我从来不喜欢使用“全选”选项的复选框,即使你经常看到它。它不是一个被挑选的项目,而是一个动作。如果您选择全部然后开始取消选择列表中的单个项目,则选中全部复选框的“已选中”状态将变得固有地混淆。我更喜欢使用一个简单但明显的链接/按钮,在单击时选择“全选”和“取消全选”。当取消选择单个项目时,没有任何状态可以让您感到困惑,按下按钮的结果永远不会产生疑问。操作的独特性使得来回切换是完全合理的(而不是使用两个始终可见的按钮;一个用于全选,一个用于取消全部选择),因为您最多只需要两次点击您想要的行为。它在视觉上将这些“动作”从各个项目中分离出来,防止错误点击和区分行为。

答案 1 :(得分:4)

如果您可以使用列表格式化对话框,我喜欢“列表标题中的复选框”方法(并且大多数用户直观地知道如何使用它)。

SelectAllCheckBox

如果您不想使用列表,我认为按钮或超链接(从“全选”切换到“选择无”)将比另一个难以在其他所有其他复选框中更好地工作复选框。此外,取消选中“全部选中”复选框并不一定会为用户提供“check none”功能。

答案 2 :(得分:1)

只需将“全选”复选框更靠近左边框。也许改变文字“所有以前的游戏”等,以明确选择“全部”。

答案 3 :(得分:0)

这是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

答案 4 :(得分:-1)

我会说这是选择/取消全选的最直观方式。但我也看到一些使用链接,但我更喜欢。