C# 控件中带有按钮的CausesValidation层次结构
我会看看我是否能很好地解释这一点,以便有人回答或让我走上正确的道路 下面是: 我已经建立了几个自定义控件;表单、文本框、复选框等。其中一个控件是一个导航栏,其中包含诸如:Top、Next、Find、Add、Delete等按钮 在我的表单上有导航栏和其他几个自定义文本框、复选框、组合框等。这些控件中的每个控件都有C# 控件中带有按钮的CausesValidation层次结构,c#,winforms,validation,C#,Winforms,Validation,我会看看我是否能很好地解释这一点,以便有人回答或让我走上正确的道路 下面是: 我已经建立了几个自定义控件;表单、文本框、复选框等。其中一个控件是一个导航栏,其中包含诸如:Top、Next、Find、Add、Delete等按钮 在我的表单上有导航栏和其他几个自定义文本框、复选框、组合框等。这些控件中的每个控件都有OnValidating方法中的自定义代码 导航按钮容器的CausesValidation属性似乎优先于栏中按钮的CausesValidation属性 因此,我真正想做的是关闭容器的Cau
OnValidating
方法中的自定义代码
导航按钮容器的CausesValidation
属性似乎优先于栏中按钮的CausesValidation
属性
因此,我真正想做的是关闭容器的CausesValidation
,并在表单上设置控件,无论每个按钮的CausesValidation
属性值是多少
当我构建导航栏时,它的基类是UserControl
。我尝试了大多数容器控件,得到了类似的行为
因此,我不确定是否应该为每个控件选择不同的方法(除了验证时的
方法),或者当容器casuesvalization=False
时是否有其他方法来进行验证,但是按钮上的casuesvalization=true
我解决了问题
无论是否有焦点,验证时的复选框
都会启动。我不知道为什么,也找不到任何理由。我在OnValidating
方法中删除了代码,并将其放置在OnClick
和CheckChanged
中,从而解决了我的问题
然后,我能够将导航栏的容器的CausesValidation
属性更改回false