ValidateChildren Method
Collapse the table of content
Expand the table of content

ContainerControl.ValidateChildren Method ()


Causes all of the child controls within a control that support validation to validate their data.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public virtual bool ValidateChildren()

Return Value

Type: System.Boolean

true if all of the children validated successfully; otherwise, false. If called from the Validating or Validated event handlers, this method will always return false.

ValidateChildren will descend a control's hierarchy and examine each control to see if it supports validation. If the control can be selected by the user and its CausesValidation property is true, ValidateChildren will cause the Validating event to occur. If any of the controls cancel the Validating event, this method will return false; otherwise, it will return true.

If a control is bound to a data source, and the Validating event occurs, it will cause the control to push its current data back to the data source.

Calling ValidateChildren is equivalent to calling ValidateChildren with a ValidationConstraints of None.

The following code example turns off implicit validation for a form and all of its contained controls, and instead manually performs validation of all of the form's children when a mouse button is clicked.

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System.Text;

namespace TestValidation
    class Form1 : Form
        private static void Main(string[] args)
            Application.Run(new Form1());

        private TextBox firstNameBox, lastNameBox;
        private Button validateButton;
        private FlowLayoutPanel flowLayout1;

        private Form1()
            this.Load += new EventHandler(Form1_Load);

        void Form1_Load(object sender, EventArgs e)
            // Turn off validation when a control loses focus. This will be inherited by child
            // controls on the form, enabling us to validate the entire form when the 
            // button is clicked instead of one control at a time.
            this.AutoValidate = AutoValidate.Disable;

            flowLayout1 = new FlowLayoutPanel();
            flowLayout1.Dock = DockStyle.Fill;
            flowLayout1.Name = "flowLayout1";

            firstNameBox = new TextBox();
            firstNameBox.Name = "firstNameBox";
            firstNameBox.Size = new Size(75, firstNameBox.Size.Height);
            firstNameBox.CausesValidation = true;
            firstNameBox.Validating += new System.ComponentModel.CancelEventHandler(firstNameBox_Validating);

            lastNameBox = new TextBox();
            lastNameBox.Name = "lastNameBox";
            lastNameBox.Size = new Size(75, lastNameBox.Size.Height);
            lastNameBox.CausesValidation = true;
            lastNameBox.Validating += new System.ComponentModel.CancelEventHandler(lastNameBox_Validating);

            validateButton = new Button();
            validateButton.Text = "Validate";
            // validateButton.Location = new Point(170, 10);
            validateButton.Size = new Size(75, validateButton.Size.Height);
            validateButton.Click += new EventHandler(validateButton_Click);


            this.Text = "Test Validation";

        void firstNameBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
            if (firstNameBox.Text.Length == 0)
                e.Cancel = true;
                e.Cancel = false;

        void lastNameBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
            e.Cancel = false;

        void validateButton_Click(object sender, EventArgs e)
            if (this.ValidateChildren())
                MessageBox.Show("Validation succeeded!");
                MessageBox.Show("Validation failed.");

.NET Framework
Available since 2.0
Return to top
© 2015 Microsoft