ContainerControl.ValidateChildren Method (ValidationConstraints)
Causes all of the child controls within a control that support validation to validate their data.
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
<BrowsableAttribute(False)> Public Overridable Function ValidateChildren ( validationConstraints As ValidationConstraints ) As Boolean
Parameters
- validationConstraints
-
Type:
System.Windows.Forms.ValidationConstraints
Places restrictions on which controls have their Validating event raised.
Return Value
Type: System.Booleantrue 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 examine all the children of the current control, causing the Validating event to occur on a control if it meets the criteria spelled out by ValidationConstraints.
You may use several ValidationConstraints parameters at once by combining them with a bitwise OR operator. Combining parameters with a bitwise OR operator will result in a logical AND operation. For example, calling ValidateChildren(ValidationConstraints.ImmediateChildren | ValidationConstraints.Enabled) will only raise the Validating event on controls that are both immediate children of the container AND are enabled.
Regardless of which parameters you specify for this method, a control must have its CausesValidation property set to true in order for its Validating event to occur. You should also set the AutoValidate property of the control or of the control's container to false if you want validation to happen only when you call ValidateChildren, and not when the user shifts focus from the control.
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.
You cannot achieve the opposite effect of a ValidationConstraints parameter by applying a bitwise negation operator. For example, if you supply the negative value of the Visible field to ValidateChildren, it will not validate all children that are not visible on the container. Supplying any negative parameter to ValidateChildren will have no effect on the container or its children.
The following code example will only cause the Validating event to occur for immediate children of the form whose Enabled property is true.
Imports System.Drawing Imports System.Windows.Forms Namespace ValidateChildrenWithConstraints _ Class Form1 Inherits Form Public Overloads Shared Sub Main(ByVal args() As String) Application.EnableVisualStyles() Application.Run(New Form1()) End Sub Private Sub New() AddHandler Me.Load, AddressOf Form1_Load End Sub Dim WithEvents TextBox1, TextBox2, TextBox3 As TextBox Dim FlowPanel1 As FlowLayoutPanel Dim WithEvents SubTextBox1 As TextBox Dim WithEvents Button1 As Button Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) ' Create controls on form. Me.Size = New Size(500, 300) Me.AutoValidate = AutoValidate.Disable TextBox1 = New TextBox() TextBox1.Location = New Point(20, 20) TextBox1.Size = New Size(75, TextBox1.Size.Height) TextBox1.CausesValidation = True Me.Controls.Add(TextBox1) TextBox2 = New TextBox() TextBox2.Location = New Point(105, 20) TextBox2.Size = New Size(75, TextBox2.Size.Height) TextBox2.CausesValidation = True Me.Controls.Add(TextBox2) TextBox3 = New TextBox() TextBox3.Location = New Point(190, 20) TextBox3.Size = New Size(75, TextBox3.Size.Height) TextBox3.Enabled = False TextBox3.CausesValidation = True Me.Controls.Add(TextBox3) Button1 = New Button() Button1.Text = "Click" Button1.Location = New Point(270, 20) Me.Controls.Add(Button1) FlowPanel1 = New FlowLayoutPanel() FlowPanel1.Size = New Size(400, 100) FlowPanel1.Dock = DockStyle.Bottom SubTextBox1 = New TextBox() SubTextBox1.CausesValidation = True FlowPanel1.Controls.Add(SubTextBox1) Me.Controls.Add(FlowPanel1) End Sub 'Form1_Load Sub SubTextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SubTextBox1.Validating MessageBox.Show("SubTextBox1 Validating!") End Sub 'SubTextBox1_Validating Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating MessageBox.Show("TextBox1 Validating!") End Sub 'TextBox1_Validating Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating MessageBox.Show("TextBox2 Validating!") End Sub 'TextBox2_Validating Sub TextBox3_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox3.Validating MessageBox.Show("TextBox3 Validating!") End Sub 'TextBox3_Validating Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click Me.ValidateChildren((ValidationConstraints.ImmediateChildren Or ValidationConstraints.Enabled)) End Sub 'Button1_Click End Class 'Form1 End Namespace 'ValidateChildrenWithConstraints
Available since 2.0