AutoValidate Wyliczenie

Definicja

Określa, w jaki sposób kontrolka weryfikuje swoje dane, gdy traci fokus danych wejściowych użytkownika.

C#
public enum AutoValidate
Dziedziczenie
AutoValidate

Pola

Nazwa Wartość Opis
Disable 0

Niejawna walidacja nie zostanie wykonana. Ustawienie tej wartości nie zakłóca jawnych wywołań funkcji Validate() lub ValidateChildren().

EnableAllowFocusChange 2

Występuje niejawna walidacja, ale jeśli walidacja nie powiedzie się, fokus nadal zmieni się na nową kontrolkę. Jeśli walidacja Validated nie powiedzie się, zdarzenie nie zostanie uruchomione.

EnablePreventFocusChange 1

Niejawna walidacja występuje, gdy kontrolka traci fokus.

Inherit -1

Kontrolka dziedziczy zachowanie AutoValidate kontenera (na przykład formularza lub innej kontrolki). Jeśli nie ma kontrolki kontenera, wartość domyślna to EnablePreventFocusChange.

Przykłady

Poniższy przykład kodu wyłącza niejawną walidację formularza i wszystkich zawartych w nim kontrolek, a zamiast tego ręcznie przeprowadza walidację wszystkich elementów podrzędnych formularza po kliknięciu przycisku myszy.

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

Uwagi

Jeśli użytkownik wyłączy fokus kontrolki Windows Forms, kontrolka zostanie użyta AutoValidate do określenia sposobu sprawdzania poprawności danych. Ten typ weryfikacji jest nazywany niejawną weryfikacją, ponieważ występuje bez konieczności jawnego wywołania metody Validate lub ValidateChildren.

Właściwość odpowiadająca tej wartości będzie miała różne wartości domyślne na podstawie typu kontrolki. Aby uzyskać więcej informacji, zobacz Walidacja danych wejściowych użytkownika w Windows Forms.

Dotyczy

Produkt Wersje
.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

Zobacz też