C#UserControl验证

时间:2010-04-26 07:00:18

标签: c# winforms validation user-controls

我有一个带有Tab控件的UserControl,其中包含三个选项卡。标签内有多个控件 - Datetimepickers,textboxes,comboboxes。

还有一个Save按钮,当点击它时,调用this.ValidateChildren(ValidationConstraints.Enabled)现在,我点击保存并发生geniune验证错误。我更正了错误,然后再次单击“保存” - 在另一个选项卡上的组合框中发生了错误。如果我导航到此选项卡并单击“保存”,则一切正常。怎么会这样?我没有更改组合框中的任何值,那么失败验证如何通过验证呢?

组合框与其selectedValue和Text集绑定到数据集。我只是不明白这里发生了什么。

某些文本框也会出现这种情况。验证规则是它们必须是小数 - 默认值为零,这是允许的。同样的事情发生了,他们第一次验证失败 - 我没有做任何更改,再次点击保存并通过验证。

编辑:

错误不是框架错误 - 错误是我在验证例程中提供的错误。例如,选择一个有效的下拉选项。

我逐步完成了整个过程,有时组合框值是默认值,其他时候,selectedvalue是默认值,但文本为null。如果我没有更改组合框中的任何内容,我不明白这是怎么发生的。

如果您需要任何进一步的信息,请告诉我

感谢

百里

2 个答案:

答案 0 :(得分:4)

以下是MSDN的引用:

“在显示标签页之前,不会创建TabPage中包含的控件,并且在显示标签页之前不会激活这些控件中的任何数据绑定。”

所以我猜测,如果在你第一次按下保存之前,你确保你至少点击了每个标签一次,它会按预期工作,但如果你不查看所有标签在保存之前,它会失败吗?

答案 1 :(得分:0)

您是否检查过默认值不是null