输入不正确时取消复选框检查

时间:2012-04-18 12:19:13

标签: c# wpf checkbox

(使用WPF应用程序) 情况就是这样:

有3个用户输入字段。 1小时,1分钟和1秒。 在它后面是一个“将时间除以一半”的复选框,它只会将用户输入创建的时间跨度减半。

但是当复选框被选中时,如果用户在字段中输入任何数字,我首先检查代码:小时/分钟/秒。 如果全部为0,则会弹出一个消息框,告诉用户他需要输入某些内容。 但此时,我想“取消”复选框的检查。

我应该使用e.Cancel之类的东西吗? 或者我应该将IsChecked与消息框一起设置为假?

我想知道正确处理这个问题的方法是。

2 个答案:

答案 0 :(得分:4)

我认为你的做法是错误的。 只有在有效输入时才应启用该复选框。 您可以在文本框上设置LostFocus事件,并在该事件内部检查所有输入值。 如果输入正确,则启用复选框,否则禁用它。无需取消勾选标记

答案 1 :(得分:1)

单击复选框的操作有两个步骤:

  • 验证时间
  • 将它除以一半

如果要在一个独特的操作中维护这两个步骤,检查复选框的操作实际上会触发事件,执行验证步骤,然后取消选中它。我认为从这个角度来看,将checkbox.IsChecked设置为false更为正确。

正如史蒂夫所指出的,我将验证步骤与操作分开。当输入无效时,禁用复选框,在文本框的TextChanged事件上放置检查功能。如果一切正常,您可以启用CheckBox。如果没有禁用它,如果选中则取消选中它。