Exportar (0) Imprimir
Expandir todo

ErrorProvider (Clase)

Proporciona una interfaz de usuario para indicar que un control de un formulario tiene un error asociado.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public class ErrorProvider : Component, IExtenderProvider, ISupportInitialize
public class ErrorProvider extends Component implements IExtenderProvider, ISupportInitialize
public class ErrorProvider extends Component implements IExtenderProvider, ISupportInitialize
No aplicable.

ErrorProvider presenta un mecanismo simple para indicar al usuario final que un control de un formulario tiene un error asociado. Si se especifica una cadena de descripción de error para el control, se muestra un icono junto a éste. El icono parpadea de la manera que especifica BlinkStyle, con la frecuencia que especifica BlinkRate. Cuando el mouse (ratón) pase por encima del icono, se mostrará la información sobre herramientas con una cadena de descripción del error.

Normalmente, ErrorProvider se utiliza con controles enlazados a datos. Si utiliza ErrorProvider con controles enlazados a datos, debe especificar la propiedad ContainerControl en el constructor o estableciendo la propiedad ContainerControl.

NotaNota:

El componente ErrorProvider no proporciona compatibilidad integrada para los clientes de accesibilidad. Para que la aplicación sea accesible al utilizar este componente, debe proporcionar un mecanismo de respuesta adicional que sea accesible.

En el siguiente ejemplo de código se muestra cómo utilizar la clase ErrorProvider para notificar al usuario de un error de entrada de datos. En el ejemplo se crea un Form que contiene un control TextBox, un control NumericUpDown y un control ComboBox, cada uno de los cuales valida su propio contenido, y se crea un ErrorProvider para cada control. En el ejemplo, se establecen las opciones del icono de error mediante las propiedades BlinkRate y BlinkStyle y los métodos SetIconAlignment y SetIconPadding. Se llama al método SetError con o sin el texto de error adecuado durante el evento Validated de un control, en función del contenido del control.

using System;
using System.Drawing;
using System.Windows.Forms;

namespace ErrorProvider
{
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.Label label5;
        private System.Windows.Forms.Label label6;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.TextBox nameTextBox1;
        private System.Windows.Forms.NumericUpDown ageUpDownPicker;
        private System.Windows.Forms.ComboBox favoriteColorComboBox;
        private System.Windows.Forms.ErrorProvider ageErrorProvider;
        private System.Windows.Forms.ErrorProvider nameErrorProvider;
        private System.Windows.Forms.ErrorProvider favoriteColorErrorProvider;

        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        public Form1()
        {
            this.nameTextBox1 = new System.Windows.Forms.TextBox();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.ageUpDownPicker = new System.Windows.Forms.NumericUpDown();
            this.favoriteColorComboBox = new System.Windows.Forms.ComboBox();
            this.label3 = new System.Windows.Forms.Label();
            this.label4 = new System.Windows.Forms.Label();
            this.label5 = new System.Windows.Forms.Label();
            this.label6 = new System.Windows.Forms.Label();

            // Name Label
            this.label1.Location = new System.Drawing.Point(56, 32);
            this.label1.Size = new System.Drawing.Size(40, 23);
            this.label1.Text = "Name:";

            // Age Label
            this.label2.Location = new System.Drawing.Point(40, 64);
            this.label2.Size = new System.Drawing.Size(56, 23);
            this.label2.Text = "Age (3-5)";           

            // Favorite Color Label
            this.label3.Location = new System.Drawing.Point(24, 96);
            this.label3.Size = new System.Drawing.Size(80, 24);
            this.label3.Text = "Favorite color";

            // ErrorBlinkStyle.AlwaysBlink Label
            this.label4.Location = new System.Drawing.Point(264, 32);
            this.label4.Size = new System.Drawing.Size(160, 23);
            this.label4.Text = "ErrorBlinkStyle.AlwaysBlink";

            // ErrorBlinkStyle.BlinkIfDifferentError Label
            this.label5.Location = new System.Drawing.Point(264, 64);
            this.label5.Size = new System.Drawing.Size(200, 23);
            this.label5.Text = "ErrorBlinkStyle.BlinkIfDifferentError";

            // ErrorBlinkStyle.NeverBlink Label
            this.label6.Location = new System.Drawing.Point(264, 96);
            this.label6.Size = new System.Drawing.Size(200, 23);
            this.label6.Text = "ErrorBlinkStyle.NeverBlink";

            // Name TextBox
            this.nameTextBox1.Location = new System.Drawing.Point(112, 32);
            this.nameTextBox1.Size = new System.Drawing.Size(120, 20);
            this.nameTextBox1.TabIndex = 0;
            this.nameTextBox1.Validated += new System.EventHandler(this.nameTextBox1_Validated);

            // Age NumericUpDown
            this.ageUpDownPicker.Location = new System.Drawing.Point(112, 64);
            this.ageUpDownPicker.Maximum = new System.Decimal(new int[] {150,0,0,0});
            this.ageUpDownPicker.TabIndex = 4;
            this.ageUpDownPicker.Validated += new System.EventHandler(this.ageUpDownPicker_Validated);

            // Favorite Color ComboBox
            this.favoriteColorComboBox.Items.AddRange(new object[] {"None","Red","Yellow",
                                                                    "Green","Blue","Purple"});
            this.favoriteColorComboBox.Location = new System.Drawing.Point(112, 96);
            this.favoriteColorComboBox.Size = new System.Drawing.Size(120, 21);
            this.favoriteColorComboBox.TabIndex = 5;
            this.favoriteColorComboBox.Validated += new System.EventHandler(this.favoriteColorComboBox_Validated);

            // Set up how the form should be displayed and add the controls to the form.
            this.ClientSize = new System.Drawing.Size(464, 150);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                        this.label6,this.label5,this.label4,this.label3,
                                        this.favoriteColorComboBox,this.ageUpDownPicker,
                                        this.label2,this.label1,this.nameTextBox1});
            this.Text = "Error Provider Example";

            // Create and set the ErrorProvider for each data entry control.

            nameErrorProvider = new  System.Windows.Forms.ErrorProvider();
            nameErrorProvider.SetIconAlignment (this.nameTextBox1, ErrorIconAlignment.MiddleRight);
            nameErrorProvider.SetIconPadding (this.nameTextBox1, 2);
            nameErrorProvider.BlinkRate = 1000;
            nameErrorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.AlwaysBlink;

            ageErrorProvider = new  System.Windows.Forms.ErrorProvider();
            ageErrorProvider.SetIconAlignment (this.ageUpDownPicker, ErrorIconAlignment.MiddleRight);
            ageErrorProvider.SetIconPadding (this.ageUpDownPicker, 2);
            ageErrorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.BlinkIfDifferentError;

            favoriteColorErrorProvider = new  System.Windows.Forms.ErrorProvider();
            favoriteColorErrorProvider.SetIconAlignment (this.favoriteColorComboBox, ErrorIconAlignment.MiddleRight);
            favoriteColorErrorProvider.SetIconPadding (this.favoriteColorComboBox, 2);
            favoriteColorErrorProvider.BlinkRate = 1000;
            favoriteColorErrorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
        }
    
        private void nameTextBox1_Validated(object sender, System.EventArgs e)
        {
            if(IsNameValid())
            {
                // Clear the error, if any, in the error provider.
                nameErrorProvider.SetError(this.nameTextBox1, "");
            }
            else
            {
                // Set the error if the name is not valid.
                nameErrorProvider.SetError(this.nameTextBox1, "Name is required.");
            }
        }

        private void ageUpDownPicker_Validated(object sender, System.EventArgs e)
        {
            if (IsAgeTooYoung())
            {
                // Set the error if the age is too young.
                ageErrorProvider.SetError(this.ageUpDownPicker, "Age not old enough");
            }
            else if (IsAgeTooOld())
            {
                // Set the error if the age is too old.
                ageErrorProvider.SetError(this.ageUpDownPicker, "Age is too old");
            }
            else 
            {
                // Clear the error, if any, in the error provider.
                ageErrorProvider.SetError(this.ageUpDownPicker, "");
            }
        }

        private void favoriteColorComboBox_Validated(object sender, System.EventArgs e) 
        {
            if (!IsColorValid())
            {
                // Set the error if the favorite color is not valid.
                favoriteColorErrorProvider.SetError(this.favoriteColorComboBox, "Must select a color.");
            }
            else
            {
                // Clear the error, if any, in the error provider.
                favoriteColorErrorProvider.SetError(this.favoriteColorComboBox, "");
            }
        }

        // Functions to verify data.
        private bool IsNameValid() 
        {
            // Determine whether the text box contains a zero-length string.
            return (nameTextBox1.Text.Length > 0);
        }

        private bool IsAgeTooYoung() 
        {
            // Determine whether the age value is less than three.
            return (ageUpDownPicker.Value < 3);
        }

        private bool IsAgeTooOld() 
        {
            // Determine whether the age value is greater than five.
            return (ageUpDownPicker.Value > 5 );
        }

        private bool IsColorValid() 
        {
            // Determine whether the favorite color has a valid value.
            return ((favoriteColorComboBox.SelectedItem != null) &&
                (!favoriteColorComboBox.SelectedItem.ToString().Equals("None")));
        }
    }
}

package ErrorProvider;

import System.*;
import System.Drawing.*;
import System.Windows.Forms.*;

public class Form1 extends System.Windows.Forms.Form
{
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Label label4;
    private System.Windows.Forms.Label label5;
    private System.Windows.Forms.Label label6;
    private System.Windows.Forms.Label label3;
    private System.Windows.Forms.TextBox nameTextBox1;
    private System.Windows.Forms.NumericUpDown ageUpDownPicker;
    private System.Windows.Forms.ComboBox favoriteColorComboBox;
    private System.Windows.Forms.ErrorProvider ageErrorProvider;
    private System.Windows.Forms.ErrorProvider nameErrorProvider;
    private System.Windows.Forms.ErrorProvider favoriteColorErrorProvider;

    /** @attribute STAThread()
     */
    public static void main(String[] args)
    {
        Application.Run(new Form1());
    } //main

    public Form1()
    {
        this.nameTextBox1 = new System.Windows.Forms.TextBox();
        this.label1 = new System.Windows.Forms.Label();
        this.label2 = new System.Windows.Forms.Label();
        this.ageUpDownPicker = new System.Windows.Forms.NumericUpDown();
        this.favoriteColorComboBox = new System.Windows.Forms.ComboBox();
        this.label3 = new System.Windows.Forms.Label();
        this.label4 = new System.Windows.Forms.Label();
        this.label5 = new System.Windows.Forms.Label();
        this.label6 = new System.Windows.Forms.Label();
        // Name Label
        this.label1.set_Location(new System.Drawing.Point(56, 32));
        this.label1.set_Size(new System.Drawing.Size(40, 23));
        this.label1.set_Text("Name:");
        // Age Label
        this.label2.set_Location(new System.Drawing.Point(40, 64));
        this.label2.set_Size(new System.Drawing.Size(56, 23));
        this.label2.set_Text("Age (3-5)");
        // Favorite Color Label
        this.label3.set_Location(new System.Drawing.Point(24, 96));
        this.label3.set_Size(new System.Drawing.Size(80, 24));
        this.label3.set_Text("Favorite color");
        // ErrorBlinkStyle.AlwaysBlink Label
        this.label4.set_Location(new System.Drawing.Point(264, 32));
        this.label4.set_Size(new System.Drawing.Size(160, 23));
        this.label4.set_Text("ErrorBlinkStyle.AlwaysBlink");
        // ErrorBlinkStyle.BlinkIfDifferentError Label
        this.label5.set_Location(new System.Drawing.Point(264, 64));
        this.label5.set_Size(new System.Drawing.Size(200, 23));
        this.label5.set_Text("ErrorBlinkStyle.BlinkIfDifferentError");
        // ErrorBlinkStyle.NeverBlink Label
        this.label6.set_Location(new System.Drawing.Point(264, 96));
        this.label6.set_Size(new System.Drawing.Size(200, 23));
        this.label6.set_Text("ErrorBlinkStyle.NeverBlink");
        // Name TextBox
        this.nameTextBox1.set_Location(new System.Drawing.Point(112, 32));
        this.nameTextBox1.set_Size(new System.Drawing.Size(120, 20));
        this.nameTextBox1.set_TabIndex(0);
        this.nameTextBox1.add_Validated(new System.EventHandler(
            this.nameTextBox1_Validated));
        // Age NumericUpDown
        this.ageUpDownPicker.set_Location(new System.Drawing.Point(112, 64));
        this.ageUpDownPicker.set_Maximum(new System.Decimal(new int[] {
            150, 0, 0, 0 }));
        this.ageUpDownPicker.set_TabIndex(4);
        this.ageUpDownPicker.add_Validated(new System.EventHandler(
            this.ageUpDownPicker_Validated));
        // Favorite Color ComboBox
        this.favoriteColorComboBox.get_Items().AddRange(new Object[] { 
            "None", "Red", "Yellow", "Green", "Blue", "Purple" });
        this.favoriteColorComboBox.set_Location(
            new System.Drawing.Point(112, 96));
        this.favoriteColorComboBox.set_Size(new System.Drawing.Size(120, 21));
        this.favoriteColorComboBox.set_TabIndex(5);
        this.favoriteColorComboBox.add_Validated(new System.EventHandler(
            this.favoriteColorComboBox_Validated));
        // Set up how the form should be displayed and add the controls to 
        // the form.
        this.set_ClientSize(new System.Drawing.Size(464, 150));
        this.get_Controls().AddRange(new System.Windows.Forms.Control[] { 
            this.label6, this.label5, this.label4, this.label3, 
            this.favoriteColorComboBox, this.ageUpDownPicker, this.label2, 
            this.label1, this.nameTextBox1 });
        this.set_Text("Error Provider Example");
        // Create and set the ErrorProvider for each data entry control.
        nameErrorProvider = new System.Windows.Forms.ErrorProvider();
        nameErrorProvider.SetIconAlignment(this.nameTextBox1, 
            ErrorIconAlignment.MiddleRight);
        nameErrorProvider.SetIconPadding(this.nameTextBox1, 2);
        nameErrorProvider.set_BlinkRate(1000);
        nameErrorProvider.set_BlinkStyle(
            System.Windows.Forms.ErrorBlinkStyle.AlwaysBlink);
        nameErrorProvider.set_ContainerControl(this);

        ageErrorProvider = new System.Windows.Forms.ErrorProvider();
        ageErrorProvider.SetIconAlignment(this.ageUpDownPicker, 
            ErrorIconAlignment.MiddleRight);
        ageErrorProvider.SetIconPadding(this.ageUpDownPicker, 2);
        ageErrorProvider.set_BlinkStyle(
            System.Windows.Forms.ErrorBlinkStyle.BlinkIfDifferentError);
        ageErrorProvider.set_ContainerControl(this);

        favoriteColorErrorProvider = new System.Windows.Forms.ErrorProvider();
        favoriteColorErrorProvider.SetIconAlignment(this.favoriteColorComboBox, 
            ErrorIconAlignment.MiddleRight);
        favoriteColorErrorProvider.SetIconPadding(this.favoriteColorComboBox, 2);
        favoriteColorErrorProvider.set_BlinkRate(1000);
        favoriteColorErrorProvider.set_BlinkStyle(
            System.Windows.Forms.ErrorBlinkStyle.NeverBlink);
        favoriteColorErrorProvider.set_ContainerControl(this);
    } //Form1
    
    private void nameTextBox1_Validated(Object sender, System.EventArgs e)
    {
        if (IsNameValid()) {
            // Clear the error, if any, in the error provider.
            nameErrorProvider.SetError(this.nameTextBox1, "");
        }
        else {
            // Set the error if the name is not valid.
            nameErrorProvider.SetError(this.nameTextBox1, "Name is required.");
        }
    } //nameTextBox1_Validated

    private void ageUpDownPicker_Validated(Object sender, System.EventArgs e)
    {
        if (IsAgeTooYoung()) {
            // Set the error if the age is too young.
            ageErrorProvider.SetError(this.ageUpDownPicker, 
                "Age not old enough");
        }
        else {
            if (IsAgeTooOld()) {
                // Set the error if the age is too old.
                ageErrorProvider.SetError(this.ageUpDownPicker, 
                    "Age is too old");
            }
            else {
                // Clear the error, if any, in the error provider.
                ageErrorProvider.SetError(this.ageUpDownPicker, "");
            }
        }
    } //ageUpDownPicker_Validated

    private void favoriteColorComboBox_Validated(Object sender, 
        System.EventArgs e)
    {
        if (!(IsColorValid())) {
            // Set the error if the favorite color is not valid.
            favoriteColorErrorProvider.SetError(this.favoriteColorComboBox, 
                "Must select a color.");
        }
        else {
            // Clear the error, if any, in the error provider.
            favoriteColorErrorProvider.SetError(
                this.favoriteColorComboBox, "");
        }
    } //favoriteColorComboBox_Validated

    // Functions to verify data.
    private boolean IsNameValid()
    {
        // Determine whether the text box contains a zero-length string.
        return ((nameTextBox1.get_Text().get_Length()) > 0);
    } //IsNameValid

    private boolean IsAgeTooYoung()
    {
        // Determine whether the age value is less than three.
        return (System.Convert.ToInt32(ageUpDownPicker.get_Value()) < 3);
    } //IsAgeTooYoung

    private boolean IsAgeTooOld()
    {
        // Determine whether the age value is greater than five.
        return (System.Convert.ToInt32(ageUpDownPicker.get_Value()) > 5);
    } //IsAgeTooOld

    private boolean IsColorValid()
    {
        // Determine whether the favorite color has a valid value.
        return (favoriteColorComboBox.get_SelectedItem() != null) 
            && (!(favoriteColorComboBox.get_SelectedItem().
            ToString().Equals("None")));
    } //IsColorValid
} //Form1

En el siguiente ejemplo de código se muestra cómo utilizar ErrorProvider con DataSource y DataMember para indicar al usuario que se ha producido un error de datos.

private void InitializeComponent()
 {
     // Standard control setup.
     //....
     // You set the DataSource to a data set, and the DataMember to a table.
     errorProvider1.DataSource = dataSet1 ;
     errorProvider1.DataMember = dataTable1.TableName ;
     errorProvider1.ContainerControl = this ;
     errorProvider1.BlinkRate = 200 ;
     //...
     // Since the ErrorProvider control does not have a visible component,
     // it does not need to be added to the form. 
 }
 
 private void buttonSave_Click(object sender, System.EventArgs e)
 {
     // Checks for a bad post code.
     DataTable CustomersTable;
     CustomersTable = dataSet1.Tables["Customers"];
     foreach (DataRow row in (CustomersTable.Rows)) 
	 {
         if (Convert.ToBoolean(row["PostalCodeIsNull"])) 
         {
             row.RowError="The Customer details contain errors";
             row.SetColumnError("PostalCode", "Postal Code required");
         } 
     } 
 }


System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
      System.Windows.Forms.ErrorProvider

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0
Mostrar:
© 2015 Microsoft