Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

ContainerControl.AutoValidate Property

Definition

Namespace:
System.Windows.Forms
Assembly:
System.Windows.Forms.dll
Source:
ContainerControl.cs
Source:
ContainerControl.cs
Source:
ContainerControl.cs
Source:
ContainerControl.cs
Source:
ContainerControl.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Gets or sets a value that indicates whether controls in this container will be automatically validated when the focus changes.

public:
 virtual property System::Windows::Forms::AutoValidate AutoValidate { System::Windows::Forms::AutoValidate get(); void set(System::Windows::Forms::AutoValidate value); };
[System.ComponentModel.Browsable(false)]
public virtual System.Windows.Forms.AutoValidate AutoValidate { get; set; }
[<System.ComponentModel.Browsable(false)>]
member this.AutoValidate : System.Windows.Forms.AutoValidate with get, set
Public Overridable Property AutoValidate As AutoValidate

Property Value

An AutoValidate enumerated value that indicates whether contained controls are implicitly validated on focus change. The default is Inherit.

Attributes

Exceptions

An AutoValidate value that is not valid was used to set this property.

Examples

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.EnableVisualStyles();
 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);
 flowLayout1.Controls.Add(firstNameBox);

 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);
 flowLayout1.Controls.Add(lastNameBox);

 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);
 flowLayout1.Controls.Add(validateButton);

 this.Controls.Add(flowLayout1);

 this.Text = "Test Validation";
 }

 void firstNameBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
 {
 if (firstNameBox.Text.Length == 0)
 {
 e.Cancel = true;
 }
 else
 {
 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!");
 }
 else
 {
 MessageBox.Show("Validation failed.");
 }
 }
 }
}
Imports System.Drawing
Imports System.Windows.Forms

Public Class Form1
 Inherits Form

 'Entry point which delegates to C-style main Private Function
 Public Overloads Shared Sub Main()
 Main(System.Environment.GetCommandLineArgs())
 End Sub

 Private Overloads Shared Sub Main(ByVal args() As String)
 Application.EnableVisualStyles()
 Application.Run(New Form1())
 End Sub

 Private WithEvents FirstNameBox, LastNameBox As TextBox
 Private WithEvents ValidateButton As Button
 Private FlowLayout1 As FlowLayoutPanel

 Private Sub New()
 End Sub

 Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
 ' 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.
 Me.AutoValidate = System.Windows.Forms.AutoValidate.Disable

 FlowLayout1 = New FlowLayoutPanel()
 FlowLayout1.Dock = DockStyle.Fill

 FirstNameBox = New TextBox()
 FirstNameBox.Name = "FirstNameBox"
 FirstNameBox.Location = New Point(10, 10)
 FirstNameBox.Size = New Size(75, FirstNameBox.Size.Height)
 FirstNameBox.CausesValidation = True
 FlowLayout1.Controls.Add(FirstNameBox)

 LastNameBox = New TextBox()
 LastNameBox.Name = "LastNameBox"
 LastNameBox.Location = New Point(90, 10)
 LastNameBox.Size = New Size(75, LastNameBox.Size.Height)
 LastNameBox.CausesValidation = True
 FlowLayout1.Controls.Add(LastNameBox)

 ValidateButton = New Button()
 ValidateButton.Text = "Validate"
 ValidateButton.Location = New Point(170, 10)
 ValidateButton.Size = New Size(75, ValidateButton.Size.Height)
 FlowLayout1.Controls.Add(ValidateButton)

 Me.Text = "Test Validation"

 Me.Controls.Add(FlowLayout1)
 End Sub


 Private Sub FirstNameBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles FirstNameBox.Validating
 If FirstNameBox.Text.Length = 0 Then
 e.Cancel = True
 Else
 e.Cancel = False
 End If
 End Sub


 Private Sub LastNameBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles LastNameBox.Validating
 e.Cancel = False
 End Sub


 Private Sub ValidateButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ValidateButton.Click
 If ValidateChildren() Then
 MessageBox.Show("Validation succeeded!")
 Else
 MessageBox.Show("Validation failed.")
 End If
 End Sub
End Class

Remarks

The default value for AutoValidate will differ for each control. For more details on implicit validation, see User Input Validation in Windows Forms.

Setting this property to a new value will raise the AutoValidateChanged event.

Applies to

See also


Feedback

Was this page helpful?