我正在用c#.NET 4.0编写一个应用程序。我已经使用TabControl和TabPages实现了TDI。在每个TabPage上有一堆TextBoxes,ComboBoxes,Grids,Checkbox等。每个控件都附加了Validation和Validated事件。 Form,TabControl和每个Tabpage都将CausesValidation设置为false。在每个TabPage上还有一些Panel,每个Panel的CausesValidation也设置为false。其他控件(TextBoxes,CheckBoxes)将CausesValidation设置为true。通过这种方式,我可以独立地在TabPages之间切换。但是,当在一个选项卡上时,某些控件未通过验证,其他TabPages上的控件将无法获得焦点。我已经为每个TabPage实现了onSelecting和onDeselecting事件,因此一种方法是关闭TabPage上的控件上的CausesValidation,它将被隐藏,并在TabPage上现在位于前面的所有控件上启用CausesValidation。有没有更好的方法来实现这个功能?
添加了:
我希望独立地为每个标签进行验证。验证一个选项卡的结果不应影响其他选项卡的行为。将AutoValidate属性更改为EnableAllowFocusChange不起作用 - 我仍然希望在验证失败时阻止更改焦点,但它应仅限于此特定选项卡。如果控制因切换到其他选项卡而失去焦点,则应该允许它。
很难提供源代码,但这是一个解释问题的示例项目。