AutoValidate AutoValidate AutoValidate AutoValidate Enum


コントロールにユーザー入力フォーカスがなくなったときのコントロールの検証方法を決定します。Determines how a control validates its data when it loses user input focus.

public enum class AutoValidate
public enum AutoValidate
type AutoValidate = 
Public Enum AutoValidate


Disable Disable Disable Disable 0

暗黙的な検証は発生しません。Implicit validation will not occur. この値を設定しても、Validate() または ValidateChildren() の明示的な呼び出しには影響ありません。Setting this value will not interfere with explicit calls to Validate() or ValidateChildren().

EnableAllowFocusChange EnableAllowFocusChange EnableAllowFocusChange EnableAllowFocusChange 2

暗黙的な検証が発生しますが、検証が失敗した場合も、フォーカスは新しいコントロールに移ります。Implicit validation occurs, but if validation fails, focus will still change to the new control. 検証が失敗した場合、Validated イベントは発生しません。If validation fails, the Validated event will not fire.

EnablePreventFocusChange EnablePreventFocusChange EnablePreventFocusChange EnablePreventFocusChange 1

コントロールにフォーカスがなくなると、暗黙的な検証が発生します。Implicit validation occurs when the control loses focus.

Inherit Inherit Inherit Inherit -1

コントロールは、そのコントロールのコンテナー (フォームや他のコントロールなど) から AutoValidate 動作を継承します。The control inherits its AutoValidate behavior from its container (such as a form or another control). コンテナー コントロールがない場合、既定値は EnablePreventFocusChange です。If there is no container control, it defaults to EnablePreventFocusChange.

次のコード例では、フォームとそのコンテナー内のコントロールのすべての暗黙的な検証をオフにし、代わりにマウス ボタンがクリックされたときにすべてのフォームの子の検証を手動で実行します。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.");
Imports System
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()
    End Sub

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

    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

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

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

        Me.Text = "Test Validation"

    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
            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!")
            MessageBox.Show("Validation failed.")
        End If
    End Sub
End Class


コントロールが使用されている場合は、ユーザーは、Windows フォーム コントロールからフォーカスを切り替える、AutoValidateそのデータを検証する方法を決定します。If a user switches focus off of a Windows Forms control, the control will use AutoValidate to determine how to validate its data. アプリケーション開発者が明示的な呼び出しを行うことがなくこれが発生するため、この種類の検証は暗黙的な検証と呼ばれるValidateまたはValidateChildrenします。This type of validation is called implicit validation, because it occurs without the application developer having to make an explicit call to Validate or ValidateChildren.

この値に対応するプロパティは、コントロールの種類に基づいて既定値は異なる必要があります。The property corresponding to this value will have different defaults based on the type of control. 詳細については、次を参照してください。 Windows フォームでのユーザーの入力検証です。For more information, see User Input Validation in Windows Forms.