ContainerControl.ValidateChildren Yöntem

Tanım

Doğrulamayı destekleyen bir denetim içindeki tüm alt denetimlerin verilerini doğrulamasını sağlar.

Aşırı Yüklemeler

ValidateChildren()

Doğrulamayı destekleyen bir denetim içindeki tüm alt denetimlerin verilerini doğrulamasını sağlar.

ValidateChildren(ValidationConstraints)

Doğrulamayı destekleyen bir denetim içindeki tüm alt denetimlerin verilerini doğrulamasını sağlar.

ValidateChildren()

Kaynak:
ContainerControl.cs
Kaynak:
ContainerControl.cs
Kaynak:
ContainerControl.cs

Doğrulamayı destekleyen bir denetim içindeki tüm alt denetimlerin verilerini doğrulamasını sağlar.

C#
[System.ComponentModel.Browsable(false)]
public virtual bool ValidateChildren();

Döndürülenler

true tüm alt öğeler başarıyla doğrulandıysa; aksi takdirde , false. veya Validated olay işleyicilerinden Validating çağrılırsa, bu yöntem her zaman döndürürfalse.

Öznitelikler

Örnekler

Aşağıdaki kod örneği, bir form ve içerdiği tüm denetimler için örtük doğrulamayı kapatır ve bunun yerine fare düğmesine tıklandığında formun tüm alt öğelerinin doğrulamasını el ile gerçekleştirir.

C#
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.");
            }
        }
    }
}

Açıklamalar

ValidateChildren bir denetimin hiyerarşisini iner ve doğrulamayı destekleyip desteklemediğini görmek için her denetimi inceler. Denetim kullanıcı tarafından seçilebiliyorsa ve CausesValidation özelliği isetrueValidateChildren, olayın gerçekleşmesine Validating neden olur. Denetimlerden herhangi biri olayı iptal Validating ederse, bu yöntem döndürür false; aksi takdirde döndürür true.

Bir denetim bir veri kaynağına bağlıysa ve Validating olay gerçekleşirse, denetimin geçerli verilerini veri kaynağına geri göndermesine neden olur.

ÇağrısıValidateChildren, ile ValidationConstraints çağrısı ValidateChildren yapmakla eşdeğerdirNone.

Şunlara uygulanır

.NET Framework 4.8.1 ve diğer sürümler
Ürün Sürümler
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

ValidateChildren(ValidationConstraints)

Kaynak:
ContainerControl.cs
Kaynak:
ContainerControl.cs
Kaynak:
ContainerControl.cs

Doğrulamayı destekleyen bir denetim içindeki tüm alt denetimlerin verilerini doğrulamasını sağlar.

C#
[System.ComponentModel.Browsable(false)]
public virtual bool ValidateChildren(System.Windows.Forms.ValidationConstraints validationConstraints);

Parametreler

validationConstraints
ValidationConstraints

Denetimlerin olaylarını Validating tetiklediği kısıtlamalar yerleştirir.

Döndürülenler

true tüm alt öğeler başarıyla doğrulandıysa; aksi takdirde , false. veya Validated olay işleyicilerinden Validating çağrılırsa, bu yöntem her zaman döndürürfalse.

Öznitelikler

Örnekler

Aşağıdaki kod örneği yalnızca özelliği olan Enabled formun Validating hemen alt öğeleri için olayın gerçekleşmesine neden olurtrue.

C#
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);
        }
    }
}

Açıklamalar

ValidateChildrengeçerli denetimin tüm alt öğelerini inceler ve tarafından yazılan ValidationConstraintsölçütlere uyuyorsa olayın bir denetimde gerçekleşmesine neden olurValidating.

Bit tabanlı OR işleciyle birleştirerek aynı anda birkaç ValidationConstraints parametre kullanabilirsiniz. Parametrelerin bit düzeyinde OR işleciyle birleştirilmesi mantıksal AND işlemine neden olur. Örneğin, çağrısı ValidateChildren(ValidationConstraints.ImmediateChildren | ValidationConstraints.Enabled) yalnızca kapsayıcının Validating hem anlık alt öğeleri hem de etkin denetimlerde olayı tetikler.

Bu yöntem için hangi parametreleri belirttiğinizden bağımsız olarak, bir denetimin CausesValidation olayının gerçekleşmesi için Validating özelliğinin olarak ayarlanması true gerekir. Ayrıca, doğrulamanın yalnızca çağırdığınızda ValidateChildrengerçekleşmesini istiyorsanız denetimin veya denetimin kapsayıcısının false özelliğini olarak ayarlamanız AutoValidate gerekir; kullanıcı odağı denetimden kaydırdığında değil.

Bir denetim bir veri kaynağına bağlıysa ve Validating olay gerçekleşirse, denetimin geçerli verilerini veri kaynağına geri göndermesine neden olur.

Bit düzeyinde olumsuzlama işleci uygulayarak bir ValidationConstraints parametrenin ters etkisini elde edemezsiniz. Örneğin, alanının negatif değerini Visible öğesine ValidateChildrenbelirtirseniz, kapsayıcıda görünür olmayan tüm alt öğeleri doğrulamaz. için herhangi bir negatif parametrenin ValidateChildren sağlanılması kapsayıcıyı veya alt öğelerini etkilemeyecektir.

Şunlara uygulanır

.NET Framework 4.8.1 ve diğer sürümler
Ürün Sürümler
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10