ValidationConstraints Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет константы, которые сообщают методу ValidateChildren(ValidationConstraints) о способе проверки дочерних элементов управления, принадлежащих контейнеру.
Это перечисление поддерживает побитовую комбинацию значений его членов.
public enum class ValidationConstraints
[System.Flags]
public enum ValidationConstraints
[<System.Flags>]
type ValidationConstraints =
Public Enum ValidationConstraints
- Наследование
- Атрибуты
Поля
Enabled | 2 | Проверяет дочерние элементы управления, свойство Enabled которых установлено равным |
ImmediateChildren | 16 | Проверяет дочерние элементы управления, которые размещены непосредственно в контейнере. Не проверяет дочерние элементы этих дочерних элементов. Например, если имеется форма Form, содержащая настраиваемый элемент управления UserControl, а элемент управления UserControl содержит кнопку Button, тогда использование ImmediateChildren инициирует событие Validating для элемента управления UserControl, но не события Validating для кнопки Button. |
None | 0 | Проверяет все дочерние элементы управления и все дочерние элементы этих дочерних элементов управления независимо от параметров их свойств. |
Selectable | 1 | Проверяет выбираемые дочерние элементы. |
TabStop | 8 | Проверяет дочерние элементы управления, имеющие установленное значение TabStop, которое означает, что пользователь может перемещаться к таким элементам управления, пользуясь клавишей TAB. |
Visible | 4 | Проверяет дочерние элементы управления, свойство Visible которых установлено равным |
Примеры
В следующем примере кода событие вызывается только Validating для непосредственных дочерних элементов формы, свойство которой Enabled имеет значение true
.
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);
}
}
}
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
Sub SubTextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SubTextBox1.Validating
MessageBox.Show("SubTextBox1 Validating!")
End Sub
Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
MessageBox.Show("TextBox1 Validating!")
End Sub
Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
MessageBox.Show("TextBox2 Validating!")
End Sub
Sub TextBox3_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox3.Validating
MessageBox.Show("TextBox3 Validating!")
End Sub
Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
Me.ValidateChildren((ValidationConstraints.ImmediateChildren Or ValidationConstraints.Enabled))
End Sub
End Class
End Namespace 'ValidateChildrenWithConstraints
Комментарии
По умолчанию ValidateChildren проверяет все включенные элементы управления в контейнере, например форму. Используйте это перечисление, чтобы ограничить типы элементов управления, событие которых Validating вызывается.
Эти перечисленные значения можно объединить вместе с побитовой операцией ИЛИ. Объединение параметров с побитовой оператором OR приведет к логической операции AND. Например, вызов ValidateChildren(ValidationConstraints.ImmediateChildren | ValidationConstraints.Enabled)
вызовет Validating событие только для элементов управления, которые являются непосредственными дочерними элементами контейнера И включены.
Если при вызове ValidateChildrenне указать ImmediateChildren, методу потребуется проверить все дочерние элементы управления в иерархии элементов управления.