我有一个我需要根据用户选择的选项进行过滤的设备列表。一种这样的选择是冷却:当用户选择冷却时,仅显示具有冷却的设备。如果未选择冷却,则会显示所有设备(带或不带冷却)。
我想知道我最好用什么样的控制。我的感觉是复选框不是一个好的控件,因为它代表:
没有冷却(未检查)/仅冷却 (选中)
虽然我想要
冷却,不冷却(未检查)/ 只冷却(检查)。
这里最好使用哪种控制?
感谢。
答案 0 :(得分:1)
我看到三个选项,按优先顺序递减:
使用ThreeState
property使用三态复选框(可以为灰色的复选框)。这里的主要优点是更少的杂乱,更少的阅读和更少的点击。如果它们在开始时处于灰色状态,则用户将清楚这种状态是可能的,并且与通常的复选框行为的偏差应该不是很大的问题。
使用带有“是”,“否”和“不关心”选项的下拉列表。如果部分或全部选项最初都是明确的“是”或“否”,那么这可能是更好的选择。
使用具有三列的单选按钮网格。丑陋,需要一些思考来理解它。我不会这样做。
答案 1 :(得分:1)
不要忘记.NET复选框类可以设置为具有三种状态
CheckBox.ThreeState = TRUE;
编辑这会为CheckBox.Checked
提供真或假,并为CheckBox.CheckState
选中,取消选中或不确定。
答案 2 :(得分:1)
复选框是正确的控件。你只需要正确地标记它:“仅包括设备:[]冷却。”这对我来说似乎毫不含糊,取消检查意味着不应用过滤器,包括有冷却和不冷却的设备。通常,用户将空白(包括未选中)解释为“不对此条件进行查询/过滤”,而不是“反转此查询过滤条件”。
如果您不相信,请使用单选按钮(如果空间紧张,则使用下拉列表):“仅包括设备:()冷却,()有冷却或无冷却。”
如果您想要包含过滤无冷却的选项,则必须使用单选按钮或下拉列表:“仅包括设备:()使用冷却,()不冷却。”同样,如果您需要显示超过两个州,你必须使用单选按钮或下拉列表:“仅包括设备:()冷却,()不冷却, ()有或没有冷却。“
你是正确的,使用三态复选框会让人感到困惑。混合状态用于表示“某些是,有些不是”而不是“是和否”.Windows UX交互指南明确禁止将复选框的混合状态用作单个项目的第三个状态(在这种情况下,您使用过滤器) ),或让用户选择混合状态(第49页)。
一般情况下应避免使用。