2009-11-18 4 views
7

У меня есть winforms с некоторыми элементами управления и ErrorProvider. Проверяющие события элемента управления используются для проверки данных и сообщают об ошибке ErrorProvider, если они есть. Это отлично работает, когда пользователь вводит неправильную информацию в элемент управления и оставляет управление.Как заставить элемент управления проверить себя?

Однако проверка не происходит, если пользователь нажимает кнопку без ввода каких-либо данных. Есть ли способ принудительно проверить все элементы управления, когда пользователь нажимает «ОК»? И в случае, когда некоторая проверка не удалась, как мне узнать и отменить событие OK?

ответ

14

Вы можете использовать Form.ValidateChildren, чтобы принудительно проверить все элементы управления формы, если они поддерживают проверку. Обратите внимание, что любой элемент управления с параметром CausesValidation, установленный в значение False, не будет вызывать событие Validating и поэтому не будет проверен ValidateChildren.

+11

Что касается проверки единого ComboBox? Form.ValidateChildren представляет проблему эффективности при использовании в формах с большим количеством элементов управления, которые вызывают проверку. – Rob

3

Вы также можете использовать Validate или ValidateChildren любого предка ContainerControl, где Validate должен работать лучше всего.

Отметьте, что Form является ContainerControl.

Смежные вопросы