Leggere in inglese

Condividi tramite


AutoValidate Enumerazione

Definizione

Determina il modo in cui un controllo convalida i propri dati se perde lo stato attivo per l'input dell'utente.

C#
public enum AutoValidate
Ereditarietà
AutoValidate

Campi

Nome Valore Descrizione
Disable 0

La convalida implicita non si verificherà. L'impostazione di questo valore non interferisce con le chiamate esplicite al metodo Validate() o ValidateChildren().

EnableAllowFocusChange 2

Si verifica la convalida implicita ma se ha esito negativo, lo stato attivo continuerà a modificare il nuovo controllo. Se la convalida ha esito negativo, non verrà generato l'evento Validated.

EnablePreventFocusChange 1

La convalida implicita si verifica quando il controllo perde lo stato attivo.

Inherit -1

Il controllo eredita il comportamento AutoValidate dal relativo contenitore (ad esempio un form o un altro controllo). Se non è presente un controllo contenitore, viene impostata l'enumerazione EnablePreventFocusChange come predefinita.

Esempio

L'esempio di codice seguente disattiva la convalida implicita per un modulo e tutti i relativi controlli contenuti e esegue invece manualmente la convalida di tutti gli elementi figlio del modulo quando viene fatto clic su un pulsante del mouse.

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

Commenti

Se un utente disattiva lo stato attivo di un controllo Windows Forms, il controllo userà AutoValidate per determinare come convalidare i dati. Questo tipo di convalida viene chiamato convalida implicita, perché si verifica senza che lo sviluppatore dell'applicazione deve effettuare una chiamata esplicita a Validate o ValidateChildren.

La proprietà corrispondente a questo valore avrà valori predefiniti diversi in base al tipo di controllo. Per altre informazioni, vedere Convalida dell'input utente in Windows Forms.

Si applica a

Prodotto Versioni
.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

Vedi anche