我注意到UI开发中的一个常见场景(包括Web和胖客户机),其中有一组单选按钮,单击单选按钮意味着要“选择”其他控件的“特定”集(为了简单起见,假设它们都是文本框)。
为了说明,星号代表单选按钮,下划线代表文本框。每个单选按钮都应该“选择”同一行中文本框的“集合”。
* ________ ________ __________
* ________
* ________ ________
因此,转化为UI需求,这意味着
对我来说,问题是正确的编程是令人惊讶的困难。需要处理的事件很多,处理程序可能会引发其他事件,等等。
有什么可以遵循的“模式”吗?
发布于 2009-12-11 03:24:40
实际上,从可用性的角度来看,我建议在取消选中单选按钮时,不要删除文本框中的值。当用户在单选按钮之间切换时,您不应该破坏他们的工作。通过不清除文本框,用户可以在选项B之后返回使用选项A,而不必重新输入文本框值。
取消选中关联的单选按钮时,您可能希望禁用文本框,以便向用户指示文本框值不适用。您可能还应该使选择单选按钮自动将焦点放在第一个相关文本框中,以节省用户额外的鼠标或选项卡按键。在大多数情况下,这将与用户在原始设计中单击所需的文本框一样高效。
此设计还简化了代码。您只需要在更新事件中为单选按钮设置启用和焦点。
发布于 2009-12-11 08:23:04
有很多事情要处理
一个小的控制器层次结构可能会有所帮助。行控制器负责处理单个行中的小部件中的事件,并选择/取消选择特定行。行集控制器负责将“其他行选定的”通知传递给集合中的行。
人们可能会称之为分层MVC (这里是一个模式:- ),尽管这个名字听起来太重了,无法描述上面的内容。
而处理程序可能会导致其他事件的触发等。
类似于行控制器在选择/取消选择行时抑制触发的次要事件的任务。行控制器知道是否正在执行选择/取消选择,因此可以抑制次要事件。不确定这是否是一种模式。也许是一个布尔标志模式来表示正在进行的选择:-)
发布于 2009-12-11 08:43:31
您可以使用“子表单”UI模式及其相关模式(替代子表单、子表单选择等)。
您可以阅读对这些模式的解释,这里。
https://stackoverflow.com/questions/1875787
复制相似问题