0

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

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

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

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

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

4

2 回答 2

4

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

于 2012-04-18T12:24:51.637 回答
1

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

  • 验证时间
  • 把它分成两半

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

正如史蒂夫指出的那样,我会将验证步骤与操作分开。输入无效时禁用复选框TextChanged,对文本框的事件设置检查功能。如果一切正常,您可以启用CheckBox. 如果不禁用它,如果选中则取消选中它。

于 2012-04-18T12:28:47.750 回答