Search code examples
c#winformsvalidating-event

Why is my validating event not firing in C#?


I have a form that is dynamically created. It is a winForms application.

This form is just a menu and a series of textboxes and labels. For the sake of this example, you can ignore the labels.

My problem is: When I edit stuff in the textboxes, then click the menu to issue "Save", the text from the last text box still hasn't issued its "Validating" method. This appears to be because the control still has focus, and that the menu is in a separate thread.

How can I force the validating events to fire when the user clicks "save"? I don't know which text box the user is on (if any), and issuing SomeKnownControl.Focus(); within the "save" function doesn't seem to help.


Solution

  • I've had this before. In your form:

    private void SaveButtonClick(...)
    {
        if (this.ValidateChildren())
        {
            // do save
        }
    }
    

    ValidateChildren on MSDN