ValidationConstraints Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет константы, которые сообщают ValidateChildren(ValidationConstraints) о том, как он должен проверять дочерние элементы управления контейнера.
Это перечисление поддерживает побитовую комбинацию значений его членов.
public enum class ValidationConstraints
[System.Flags]
public enum ValidationConstraints
[<System.Flags>]
type ValidationConstraints =
Public Enum ValidationConstraints
- Наследование
- Атрибуты
Поля
| Имя | Значение | Описание |
|---|---|---|
| None | 0 | Проверяет все дочерние элементы управления и все дочерние элементы этих дочерних элементов управления независимо от параметров их свойств. |
| Selectable | 1 | Проверяет дочерние элементы управления, которые можно выбрать. |
| Enabled | 2 | Проверяет дочерние элементы управления, для свойства которых Enabled задано |
| Visible | 4 | Проверяет дочерние элементы управления, для свойства которых Visible задано |
| TabStop | 8 | Проверяет дочерние элементы управления с набором TabStop значений, что означает, что пользователь может перейти к элементу управления с помощью клавиши TAB. |
| ImmediateChildren | 16 | Проверяет дочерние элементы управления, размещенные непосредственно в контейнере. Не проверяет ни одного из детей этих детей. Например, если у вас есть Form объект, содержащий настраиваемый UserControlобъект, и UserControl содержащий Buttonобъект, используется ImmediateChildren , это приведет Validating к возникновению события UserControl , но не Validating к событию Button. |
Примеры
Следующий пример кода приведет 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, методу потребуется проверить все дочерние элементы управления в иерархии элементов управления.