ContainerControl.ValidateChildren Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee worden alle onderliggende besturingselementen binnen een besturingselement veroorzaakt die ondersteuning bieden voor validatie om hun gegevens te valideren.
Overloads
| Name | Description |
|---|---|
| ValidateChildren() |
Hiermee worden alle onderliggende besturingselementen binnen een besturingselement veroorzaakt die ondersteuning bieden voor validatie om hun gegevens te valideren. |
| ValidateChildren(ValidationConstraints) |
Hiermee worden alle onderliggende besturingselementen binnen een besturingselement veroorzaakt die ondersteuning bieden voor validatie om hun gegevens te valideren. |
ValidateChildren()
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
Hiermee worden alle onderliggende besturingselementen binnen een besturingselement veroorzaakt die ondersteuning bieden voor validatie om hun gegevens te valideren.
public:
virtual bool ValidateChildren();
[System.ComponentModel.Browsable(false)]
public virtual bool ValidateChildren();
[<System.ComponentModel.Browsable(false)>]
abstract member ValidateChildren : unit -> bool
override this.ValidateChildren : unit -> bool
Public Overridable Function ValidateChildren () As Boolean
Retouren
true als alle onderliggende items zijn gevalideerd; anders, false. Als deze methode wordt aangeroepen vanuit de Validating of Validated gebeurtenis-handlers, wordt deze methode altijd geretourneerd false.
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld wordt impliciete validatie voor een formulier en alle ingesloten besturingselementen uitgeschakeld en wordt in plaats daarvan handmatig de validatie van alle onderliggende elementen van het formulier uitgevoerd wanneer op een muisknop wordt geklikt.
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.");
}
}
}
}
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
Private WithEvents FirstNameBox, LastNameBox As TextBox
Private WithEvents ValidateButton As Button
Private FlowLayout1 As FlowLayoutPanel
Private Sub New()
End Sub
Private 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 = System.Windows.Forms.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
Private 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
Private Sub LastNameBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles LastNameBox.Validating
e.Cancel = False
End Sub
Private 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
Opmerkingen
ValidateChildren neemt de hiƫrarchie van een besturingselement af en onderzoekt elk besturingselement om te zien of het validatie ondersteunt. Als het besturingselement door de gebruiker kan worden geselecteerd en CausesValidation de eigenschap ervan is true, ValidateChildren wordt de Validating gebeurtenis uitgevoerd. Als een van de besturingselementen de Validating gebeurtenis annuleert, wordt deze methode geretourneerd false; anders wordt deze geretourneerd true.
Als een besturingselement is gebonden aan een gegevensbron en de Validating gebeurtenis plaatsvindt, zorgt dit ervoor dat het besturingselement de huidige gegevens weer naar de gegevensbron pusht.
Bellen ValidateChildren is gelijk aan bellen ValidateChildren met een ValidationConstraints van None.
Van toepassing op
ValidateChildren(ValidationConstraints)
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
- Bron:
- ContainerControl.cs
Hiermee worden alle onderliggende besturingselementen binnen een besturingselement veroorzaakt die ondersteuning bieden voor validatie om hun gegevens te valideren.
public:
virtual bool ValidateChildren(System::Windows::Forms::ValidationConstraints validationConstraints);
[System.ComponentModel.Browsable(false)]
public virtual bool ValidateChildren(System.Windows.Forms.ValidationConstraints validationConstraints);
[<System.ComponentModel.Browsable(false)>]
abstract member ValidateChildren : System.Windows.Forms.ValidationConstraints -> bool
override this.ValidateChildren : System.Windows.Forms.ValidationConstraints -> bool
Public Overridable Function ValidateChildren (validationConstraints As ValidationConstraints) As Boolean
Parameters
- validationConstraints
- ValidationConstraints
Hiermee worden beperkingen ingesteld voor welke besturingselementen hun Validating gebeurtenis hebben gegenereerd.
Retouren
true als alle onderliggende items zijn gevalideerd; anders, false. Als deze methode wordt aangeroepen vanuit de Validating of Validated gebeurtenis-handlers, wordt deze methode altijd geretourneerd false.
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld wordt alleen de gebeurtenis uitgevoerd voor directe onderliggende elementen van het formulier waarvan Validating de Enabled eigenschap istrue.
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
Opmerkingen
ValidateChildren alle onderliggende elementen van het huidige besturingselement onderzoeken, waardoor de Validating gebeurtenis op een besturingselement voorkomt als deze voldoet aan de criteria die zijn opgegeven door ValidationConstraints.
U kunt meerdere ValidationConstraints parameters tegelijk gebruiken door ze te combineren met een bitsgewijze OR-operator. Het combineren van parameters met een bitsgewijze OR-operator resulteert in een logische AND-bewerking. Als u bijvoorbeeld aanroept ValidateChildren(ValidationConstraints.ImmediateChildren | ValidationConstraints.Enabled) , wordt alleen de Validating gebeurtenis gegenereerd voor besturingselementen die beide directe onderliggende elementen van de container zijn en die zijn ingeschakeld.
Ongeacht de parameters die u voor deze methode opgeeft, moet de eigenschap van een besturingselement zijn CausesValidation ingesteld trueValidating om de gebeurtenis te kunnen uitvoeren. U moet ook de AutoValidate eigenschap van het besturingselement of van de container false van het besturingselement instellen op als u alleen validatie wilt uitvoeren wanneer u aanroept ValidateChildrenen niet wanneer de gebruiker de focus van het besturingselement verschuift.
Als een besturingselement is gebonden aan een gegevensbron en de Validating gebeurtenis plaatsvindt, zorgt dit ervoor dat het besturingselement de huidige gegevens weer naar de gegevensbron pusht.
U kunt het tegenovergestelde effect van een ValidationConstraints parameter niet bereiken door een bitsgewijze negatieoperator toe te passen. Als u bijvoorbeeld de negatieve waarde van het Visible veld opgeeft ValidateChildren, worden niet alle onderliggende items gevalideerd die niet zichtbaar zijn in de container. Het opgeven van een negatieve parameter ValidateChildren heeft geen effect op de container of de onderliggende items.