我注意到UI开发中的常见场景(Web和胖客户端),其中有一组单选按钮,单击单选按钮意味着您要“选择”其他控件的某个“集合”(为简单起见,我们说它们都是文本框。
为了说明,星号表示单选按钮,下划线表示文本框。每个单选按钮应“选择”同一行上的“设置”文本框。
* ________ ________ __________
* ________
* ________ ________
因此转换为UI要求,这意味着
每当用户点击收音机时
按钮,文本框中的所有值
每当用户开始在文本框中输入内容时,应自动选择控制它的单选按钮(这也意味着擦除其他文本框值,如上所述)。
对我来说,问题是正确编程是非常困难的。有许多事件要处理,处理程序可以导致其他事件触发等。
是否有可以遵循的“模式”?
答案 0 :(得分:0)
实际上,从可用性的角度来看,我建议您在取消选中单选按钮时不要删除文本框中的值。当用户在单选按钮之间切换时,您不应该破坏他们的工作。通过不清除文本框,用户可以在选项B之后返回使用选项A,而无需重新输入文本框值。
当取消选中相关的单选按钮时,您可能希望禁用文本框,以便向用户表明文本框值不适用。您可能还应该选择一个单选按钮,自动将焦点放在第一个关联的文本框中,以便为用户提供额外的鼠标点击或Tab键按键。对于大多数情况,这将与用户单击原始设计中的所需文本框一样高效。
此设计还简化了您的代码。您只需在单选按钮的Update事件中设置启用和焦点。
答案 1 :(得分:0)
有很多事件需要处理
一小部分控制器可能有所帮助。行控制器负责处理来自单行中的窗口小部件的事件并选择/取消选择特定行。行集控制器负责将“其他行选择”通知传递给集合中的行。
有人可能会称之为分层MVC(在这里,你是一个模式:-)),尽管这个名称对我来说太重要了,不能描述上述内容。
并且处理程序可以导致其他事件触发等。
看起来行控制器的作业可以在选择/取消选择行时抑制触发的辅助事件。行控制器知道是否正在执行选择/取消选择,因此可以抑制次要事件。不确定这是否是一种模式。可能是一个布尔标志模式,表示正在进行选择: - )
答案 2 :(得分:0)
您可以使用“子窗体”UI模式及其相关模式(替代子窗体,子窗体选择等)
您可以阅读这些模式的解释here。