Tutorial: Trabajar con el control MaskedTextBox
Actualización: noviembre 2007
Las tareas ilustradas en este tutorial incluyen:
Inicializar el control MaskedTextBox
Utilizar el controlador de eventos MaskInputRejected para avisar al usuario cuando un carácter no se ajusta a la máscara
Asignar un tipo a la propiedad ValidatingType y utilizar el controlador de eventos TypeValidationCompleted para avisar al usuario cuando el valor que se intenta comprometer no es válido para el tipo
Para una versión completa que funcione del control MaskedTextBox que muestra las características avanzadas como la validación con tipos de datos personalizados, vea Ejemplo MaskedTextBox Control.
Crear el proyecto y agregar un control
Para agregar un control MaskedTextBox al formulario
Abra el formulario en el que desea colocar el control MaskedTextBox.
Arrastre un control MaskedTextBox desde el Cuadro de herramientas hasta el formulario.
Haga clic con el botón secundario del mouse en el control y elija Propiedades. En la ventana Propiedades, seleccione la propiedad Mask y haga clic en el botón .... (puntos suspensivos) junto al nombre de propiedad.
En el cuadro de diálogo Máscara de entrada, seleccione la máscara de Fecha corta y haga clic en Aceptar.
En la ventana Propiedades, establezca la propiedad BeepOnError en true. Esta propiedad hace que suene un bip corto cada vez que el usuario intenta introducir un carácter que infringe la definición de máscara.
Avise al usuario de los errores de entrada
Agregue un globo de información para entradas de máscara rechazadas
Vuelva al Cuadro de herramientas y agregue ToolTip al formulario.
Cree un controlador de eventos para el evento MaskInputRejected que muestre el texto de ToolTip cuando se produce un error de entrada. El globo de información permanece visible durante cinco segundos o hasta que el usuario hace clic en él.
public void Form1_Load(Object sender, EventArgs e) { ... // Other initialization code maskedTextBox1.Mask = "00/00/0000"; maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected) } void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) { toolTip1.ToolTipTitle = "Invalid Input"; toolTip1.Show("We're sorry, but only digits (0-9) are allowed in dates.", maskedTextBox1, maskedTextBox1.Location, 5000); }
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.ToolTip1.IsBalloon = True Me.MaskedTextBox1.Mask = "00/00/0000" End Sub Private Sub MaskedTextBox1_MaskInputRejected(sender as Object, e as MaskInputRejectedEventArgs) Handles MaskedTextBox1.MaskInputRejected ToolTip1.ToolTipTitle = "Invalid Input" ToolTip1.Show("We're sorry, but only digits (0-9) are allowed in dates.", MaskedTextBox1, 5000) End Sub
Avise al usuario de que tipo no es válido
Agregue un globo de información para los tipos de datos no válidos
En el controlador de eventos Load del formulario, asigne un objeto Type que representa el tipo DateTime en la propiedad ValidatingType del control MaskedTextBox:
private void Form1_Load(Object sender, EventArgs e) { // Other code maskedTextBox1.ValidatingType = typeof(System.DateTime); maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted); }
Private Sub Form1_Load(sender as Object, e as EventArgs) // Other code MaskedTextBox1.ValidatingType = GetType(System.DateTime) End Sub
Agregue un controlador de eventos para el evento TypeValidationCompleted:
public void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e) { if (!e.IsValidInput) { toolTip1.ToolTipTitle = "Invalid Date Value"; toolTip1.Show("We're sorry, but the value you entered is not a valid date. Please change the value.", maskedTextBox1, 5000); e.Cancel = true; } }
Public Sub MaskedTextBox1_TypeValidationCompleted(sender as Object, e as TypeValidationEventArgs) If Not e.IsValidInput Then ToolTip1.ToolTipTitle = "Invalid Date Value" ToolTip1.Show("We're sorry, but the value you entered is not a valid date. Please change the value.", maskedTextBox1, 5000) e.Cancel = True End If End Sub