How to force a control to validate itself?

.net, validation, winforms

Solution

You can use Form.ValidateChildren to force the validation of all the controls on the form, as long as they support validation. Note that any control with CausesValidation set to False will not raise a Validating event and will therefore not be validated by ValidateChildren.

Problem

I've a winforms with some controls and an ErrorProvider. The control's Validating events are used to validate the data and report the error to the ErrorProvider if there is any. This work great when the user enter wrong informations into the control and leaves the control. However, the validation does not happen if the user click on on without entering any data. Is there any way to force the validation of all controls when the user click on OK? And in the case where some validation failed, how would I know and cancel the OK event?

Original source