2010-04-26 68 views
0

我有一个带有包含三个选项卡的选项卡控件的UserControl。选项卡内有多个控件 - 日期时间选择器,文本框,组合框。C#用户控件验证

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

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

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

编辑:

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

我逐步了解了过程,有时组合框值是默认值,其他时候,selectedvalue是默认值,但文本为空。我不知道如果我没有改变组合框中的任何东西会发生这种情况。

如果您需要任何进一步的信息,请让我知道

感谢

巴里

+0

错误是什么? – Ando 2010-04-26 07:05:48

回答

3

以下是从MSDN报价:

“包含在TabPage的控制不创建直到被示出的标签页,并且在这些控件的任何数据绑定没有被激活,直到被示出的标签页”。

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

+0

谢谢何 - 我就是这么想的。我已经添加了一些代码来遍历UserControl的Load事件中的每个选项卡,并且验证按预期工作。 我很困惑,专注于验证,我真的不认为它可能是其他任何东西。 感谢您的帮助 – codingbadger 2010-04-26 07:40:11

0

是否检查的默认值是不是null

+0

默认值不为空。默认值被设置为来自数据集的有效选项。例如,SelectedValue是1 - 文本是“我的下拉选项文本” – codingbadger 2010-04-26 07:05:49

+0

然后您可以发布错误消息吗? – thelost 2010-04-26 07:08:41