Прочитать на английском

Поделиться через


ValidationConstraints Перечисление

Определение

Определяет константы, которые сообщают методу ValidateChildren(ValidationConstraints) о способе проверки дочерних элементов управления, принадлежащих контейнеру.

Это перечисление поддерживает побитовую комбинацию значений его членов.

C#
[System.Flags]
public enum ValidationConstraints
Наследование
ValidationConstraints
Атрибуты

Поля

Имя Значение Описание
Enabled 2

Проверяет дочерние элементы управления, свойство Enabled которых установлено равным true.

ImmediateChildren 16

Проверяет дочерние элементы управления, которые размещены непосредственно в контейнере. Не проверяет дочерние элементы этих дочерних элементов. Например, если имеется форма Form, содержащая настраиваемый элемент управления UserControl, а элемент управления UserControl содержит кнопку Button, тогда использование ImmediateChildren инициирует событие Validating для элемента управления UserControl, но не события Validating для кнопки Button.

None 0

Проверяет все дочерние элементы управления и все дочерние элементы этих дочерних элементов управления независимо от параметров их свойств.

Selectable 1

Проверяет выбираемые дочерние элементы.

TabStop 8

Проверяет дочерние элементы управления, имеющие установленное значение TabStop, которое означает, что пользователь может перемещаться к таким элементам управления, пользуясь клавишей TAB.

Visible 4

Проверяет дочерние элементы управления, свойство Visible которых установлено равным true.

Примеры

В следующем примере кода событие вызывается только Validating для непосредственных дочерних элементов формы, свойство которой Enabled имеет значение true.

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

Комментарии

По умолчанию ValidateChildren проверяет все включенные элементы управления в контейнере, например форму. Используйте это перечисление, чтобы ограничить типы элементов управления, событие которых Validating вызывается.

Эти перечисленные значения можно объединить вместе с побитовой операцией ИЛИ. Объединение параметров с побитовой оператором OR приведет к логической операции AND. Например, вызов ValidateChildren(ValidationConstraints.ImmediateChildren | ValidationConstraints.Enabled) вызовет Validating событие только для элементов управления, которые являются непосредственными дочерними элементами контейнера И включены.

Если при вызове ValidateChildrenне указать ImmediateChildren, методу потребуется проверить все дочерние элементы управления в иерархии элементов управления.

Применяется к

Продукт Версии
.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

См. также раздел