具有控件内按钮的CausesValidation层次结构

时间:2013-01-09 20:45:14

标签: c# winforms validation

我会看看我是否能够很好地解释这个问题,以便有人回答或者让我走上正确的道路。

这里是:

我已经构建了几个自定义控件;表单,文本框,复选框等。其中一个控件是导航栏,其中包含以下按钮:顶部,下一个,查找,添加,删除等。

在我的表单上是导航栏和其他几个自定义文本框,复选框,组合框等。每个控件都有OnValidating方法中的自定义代码。

导航按钮的容器的CausesValidation属性似乎优先于栏内按钮的CausesValidation属性。

所以我真正想做的是关闭容器的CausesValidation并让表单上的控件尊重每个按钮的CausesValidation属性的值。< / p>

当我构建导航栏时,其基类为UserControl。我已经尝试了大多数容器控件,并且我得到了类似的行为。

所以我不确定是否应该为每个控件选择一个不同的方法(OnValidating除外),或者是否有其他方法可以在容器CasuesValidation = False时进行验证,但是CausesValidation

上的button = true

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

事实证明 Checkbox OnValidating无论是否有焦点都会被解雇。我不知道为什么也找不到任何理由。我删除了OnValidating方法中的代码,并将其放在OnClickCheckChanged中,这解决了我的问题。

然后我可以将CausesValidation Container Navigation Bar属性更改回 false