(使用WPF应用程序) 情况就是这样:
有3个用户输入字段。 1小时,1分钟和1秒。 在它后面是一个“将时间除以一半”的复选框,它只会将用户输入创建的时间跨度减半。
但是当复选框被选中时,如果用户在字段中输入任何数字,我首先检查代码:小时/分钟/秒。 如果全部为0,则会弹出一个消息框,告诉用户他需要输入某些内容。 但此时,我想“取消”复选框的检查。
我应该使用e.Cancel之类的东西吗? 或者我应该将IsChecked与消息框一起设置为假?
我想知道正确处理这个问题的方法是。
答案 0 :(得分:4)
我认为你的做法是错误的。 只有在有效输入时才应启用该复选框。 您可以在文本框上设置LostFocus事件,并在该事件内部检查所有输入值。 如果输入正确,则启用复选框,否则禁用它。无需取消勾选标记
答案 1 :(得分:1)
单击复选框的操作有两个步骤:
如果要在一个独特的操作中维护这两个步骤,检查复选框的操作实际上会触发事件,执行验证步骤,然后取消选中它。我认为从这个角度来看,将checkbox.IsChecked
设置为false
更为正确。
正如史蒂夫所指出的,我将验证步骤与操作分开。当输入无效时,禁用复选框,在文本框的TextChanged
事件上放置检查功能。如果一切正常,您可以启用CheckBox
。如果没有禁用它,如果选中则取消选中它。