ContainerControl.ValidateChildrenとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ContainerControl.ValidateChildrenの意味・解説 

ContainerControl.ValidateChildren メソッド ()

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

検証をサポートするコントロールに含まれるすべての子コントロールでデータを検証します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Overridable Function
 ValidateChildren As Boolean
public virtual bool ValidateChildren ()
public:
virtual bool ValidateChildren ()
public boolean ValidateChildren ()
public function ValidateChildren () : boolean

戻り値
すべての子の検証が正常に実行された場合は true。それ以外の場合は false。

解説解説
使用例使用例

フォームおよびそのフォームに格納されているすべてのコントロールに対する暗黙の検証を無効にし、代わりにマウス ボタンがクリックされたときにフォームのすべての子に対して手動で検証を実行するコード例を次に示します。

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()
        Main(System.Environment.GetCommandLineArgs())
    End Sub

    Private Overloads Shared
 Sub Main(ByVal args() As
 String)
        Application.EnableVisualStyles()
        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

    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 = 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


    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


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


    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
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.");
            }
        }
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ContainerControl.ValidateChildren メソッド (ValidationConstraints)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

検証をサポートするコントロールに含まれるすべての子コントロールでデータを検証します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Overridable Function
 ValidateChildren ( _
    validationConstraints As ValidationConstraints _
) As Boolean
Dim instance As ContainerControl
Dim validationConstraints As ValidationConstraints
Dim returnValue As Boolean

returnValue = instance.ValidateChildren(validationConstraints)
public virtual bool ValidateChildren (
    ValidationConstraints validationConstraints
)
public:
virtual bool ValidateChildren (
    ValidationConstraints validationConstraints
)
public boolean ValidateChildren (
    ValidationConstraints validationConstraints
)
public function ValidateChildren (
    validationConstraints : ValidationConstraints
) : boolean

パラメータ

validationConstraints

コントロールの子を検証するときに、コントロール階層のどの段階まで対象とするのかを ValidateChildren に指示します。

戻り値
すべての子の検証が正常に実行された場合は true。それ以外の場合は false。

解説解説

ValidateChildren は、現在のコントロールのすべての子を調べ、ValidationConstraints で指定された基準を満たすコントロールで Validating イベントを発生させます。

ValidationConstraints パラメータをビットごとの OR 演算子で組み合わせて複数のパラメータを同時に使用できます。

コントロールの Validating イベントを発生させるためには、このメソッドに指定するパラメータに関係なく、そのコントロールの CausesValidation プロパティが true に設定されている必要があります。また、ValidateChildren を呼び出したときにのみ検証を発生させ、ユーザーがコントロールからフォーカスを移したときには検証を発生させないようにするには、コントロールまたはコントロールのコンテナの AutoValidate プロパティを false に設定する必要があります。

コントロールがデータ ソースにバインドされている場合に Validating イベントが発生すると、コントロールの現在のデータがデータ ソースにプッシュされます。

ValidationConstraints パラメータにビットごとの否定演算子を適用しても、逆の効果を得ることはできません。たとえば、ValidateChildren に負の値の Visible フィールドを指定しても、コンテナ上の表示されていないすべての子が検証されることはありません。ValidateChildren に負のパラメータを指定しても、コンテナやその子に影響はありません。

使用例使用例

Enabled プロパティが true であるフォームの直接的な子に Validating イベントのみを発生させるコード例を、次に示します。

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
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace ValidateChildrenWithConstraints
{
    class Form1 : Form
    {
        public static void
 Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }

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

        void Form1_Load(object sender, EventArgs e)
        {
            // Create controls on form.
            TextBox textBox1, textBox2, textBox3;
            FlowLayoutPanel flowPanel1;
            TextBox subTextBox1;
            Button button1;

            this.Size = new Size(500, 300);
            this.AutoValidate = AutoValidate.Disable;

            textBox1 = new TextBox();
            textBox1.Location = new Point(20, 20);
            textBox1.Size = new Size(75, textBox1.Size.Height);
            textBox1.CausesValidation = true;
            textBox1.Validating += new System.ComponentModel.CancelEventHandler(textBox1_Validating);
            this.Controls.Add(textBox1);

            textBox2 = new TextBox();
            textBox2.Location = new Point(105, 20);
            textBox2.Size = new Size(75, textBox2.Size.Height);
            textBox2.CausesValidation = true;
            textBox2.Validating += new System.ComponentModel.CancelEventHandler(textBox2_Validating);
            this.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;
            textBox3.Validating += new System.ComponentModel.CancelEventHandler(textBox3_Validating);
            this.Controls.Add(textBox3);

            button1 = new Button();
            button1.Text = "Click";
            button1.Location = new Point(270, 20);
            button1.Click += new EventHandler(button1_Click);
            this.Controls.Add(button1);

            flowPanel1 = new FlowLayoutPanel();
            flowPanel1.Size = new Size(400, 100);
            flowPanel1.Dock = DockStyle.Bottom;
            subTextBox1 = new TextBox();
            subTextBox1.CausesValidation = true;
            subTextBox1.Validating += new System.ComponentModel.CancelEventHandler(subTextBox1_Validating);
            flowPanel1.Controls.Add(subTextBox1);
            this.Controls.Add(flowPanel1);
        }

        void subTextBox1_Validating(object sender, System.ComponentModel.CancelEventArgs
 e)
        {
            MessageBox.Show("subTextBox1 Validating!");
        }

        void textBox1_Validating(object sender, System.ComponentModel.CancelEventArgs
 e)
        {
            MessageBox.Show("textBox1 Validating!");
        }

        void textBox2_Validating(object sender, System.ComponentModel.CancelEventArgs
 e)
        {
            MessageBox.Show("textBox2 Validating!");
        }

        void textBox3_Validating(object sender, System.ComponentModel.CancelEventArgs
 e)
        {
            MessageBox.Show("textBox3 Validating!");
        }

        void button1_Click(object sender, EventArgs e)
        {
            this.ValidateChildren(ValidationConstraints.ImmediateChildren
 | ValidationConstraints.Enabled);
        }
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ContainerControl.ValidateChildren メソッド




英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ContainerControl.ValidateChildren」の関連用語

ContainerControl.ValidateChildrenのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ContainerControl.ValidateChildrenのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS