Quote:
When you move the input focus from one constituent control of a UserControl module to another constituent control, the Validate control of the former control fires as expected. However, if you move from a constituent control to another control directly placed over the host form, the Validate event doens't fire immediately. Instead, it will fire only when the UserControl gets the focus again.
The simplest workaround for this bug is to invoke the ValidateControls method from within the UserControl_ExitFocus. Another option is to call the form's ValidateControls method from within the UserControl's LostFocus event in the parent form. However, if you do so the LostFocus event for the constituent control will fire after the LostFocus event of the UserControl, which is the reverse of the regular behavior.
So basically, it's to fire the validate event for the last used control on the form, right before the user leaves the form.