选择全部或取消选中所有复选框的最佳模式是什么。有人能想出一种更好的方式来获得这种形式:
答案 0 :(得分:34)
我会说实话,我从来不喜欢使用“全选”选项的复选框,即使你经常看到它。它不是一个被挑选的项目,而是一个动作。如果您选择全部然后开始取消选择列表中的单个项目,则选中全部复选框的“已选中”状态将变得固有地混淆。我更喜欢使用一个简单但明显的链接/按钮,在单击时选择“全选”和“取消全选”。当取消选择单个项目时,没有任何状态可以让您感到困惑,按下按钮的结果永远不会产生疑问。操作的独特性使得来回切换是完全合理的(而不是使用两个始终可见的按钮;一个用于全选,一个用于取消全部选择),因为您最多只需要两次点击您想要的行为。它在视觉上将这些“动作”从各个项目中分离出来,防止错误点击和区分行为。
答案 1 :(得分:4)
如果您可以使用列表格式化对话框,我喜欢“列表标题中的复选框”方法(并且大多数用户直观地知道如何使用它)。
如果您不想使用列表,我认为按钮或超链接(从“全选”切换到“选择无”)将比另一个难以在其他所有其他复选框中更好地工作复选框。此外,取消选中“全部选中”复选框并不一定会为用户提供“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)
我会说这是选择/取消全选的最直观方式。但我也看到一些使用链接,但我更喜欢。