MaskedTextBox.TypeValidationCompleted Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se produce cuando MaskedTextBox ha terminado de analizar el valor actual utilizando la propiedad ValidatingType.
public:
event System::Windows::Forms::TypeValidationEventHandler ^ TypeValidationCompleted;
public event System.Windows.Forms.TypeValidationEventHandler TypeValidationCompleted;
public event System.Windows.Forms.TypeValidationEventHandler? TypeValidationCompleted;
member this.TypeValidationCompleted : System.Windows.Forms.TypeValidationEventHandler
Public Custom Event TypeValidationCompleted As TypeValidationEventHandler
Tipo de evento
Ejemplos
En el ejemplo de código siguiente se intenta analizar la entrada del usuario como un objeto válido DateTime . Si se produce un error, el TypeValidationCompleted controlador de eventos muestra un mensaje de error al usuario. Si el valor es válido DateTime, el código comprueba que la fecha proporcionada no es anterior a la fecha de hoy. Este ejemplo de código requiere que el proyecto de Windows Forms contenga un MaskedTextBox control denominado MaskedTextBox1
y un ToolTip control denominado ToolTip1
.
private void Form1_Load(object sender, EventArgs e)
{
maskedTextBox1.Mask = "00/00/0000";
maskedTextBox1.ValidatingType = typeof(System.DateTime);
maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted);
maskedTextBox1.KeyDown += new KeyEventHandler(maskedTextBox1_KeyDown);
toolTip1.IsBalloon = true;
}
void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
{
if (!e.IsValidInput)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", maskedTextBox1, 0, -20, 5000);
}
else
{
//Now that the type has passed basic type validation, enforce more specific type rules.
DateTime userDate = (DateTime)e.ReturnValue;
if (userDate < DateTime.Now)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The date in this field must be greater than today's date.", maskedTextBox1, 0, -20, 5000);
e.Cancel = true;
}
}
}
// Hide the tooltip if the user starts typing again before the five-second display limit on the tooltip expires.
void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
{
toolTip1.Hide(maskedTextBox1);
}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.MaskedTextBox1.Mask = "00/00/0000"
Me.MaskedTextBox1.ValidatingType = GetType(System.DateTime)
Me.ToolTip1.IsBalloon = True
End Sub
Private Sub MaskedTextBox1_TypeValidationCompleted(ByVal sender As Object, ByVal e As TypeValidationEventArgs) Handles MaskedTextBox1.TypeValidationCompleted
If (Not e.IsValidInput) Then
Me.ToolTip1.ToolTipTitle = "Invalid Date"
Me.ToolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", Me.MaskedTextBox1, 0, -20, 5000)
Else
' Now that the type has passed basic type validation, enforce more specific type rules.
Dim UserDate As DateTime = CDate(e.ReturnValue)
If (UserDate < DateTime.Now) Then
Me.ToolTip1.ToolTipTitle = "Invalid Date"
Me.ToolTip1.Show("The date in this field must be greater than today's date.", Me.MaskedTextBox1, 0, -20, 5000)
e.Cancel = True
End If
End If
End Sub
' Hide the tooltip if the user starts typing again before the five-second display limit on the tooltip expires.
Private Sub MaskedTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MaskedTextBox1.KeyDown
Me.ToolTip1.Hide(Me.MaskedTextBox1)
End Sub
Comentarios
El MaskedTextBox control validará opcionalmente la entrada del usuario con el tipo definido por su MaskedTextBox.ValidatingType propiedad. Cuando esta propiedad no null
es , se produce la siguiente serie de eventos:
La secuencia de validación comienza cuando se produce una de las siguientes acciones:
MaskedTextBox control suelta el foco.
Se recupera la Text propiedad .
Se llama al método ValidateText .
Cualquiera de estos eventos da como resultado una llamada al
Parse
método del tipo especificado con la ValidatingType propiedad .Parse
es responsable de la conversión de la cadena de entrada con formato al tipo de destino. Una conversión correcta equivale a una validación correcta.Después
Parse
de la devolución, se genera el TypeValidationCompleted evento . El controlador de eventos para este evento se implementa normalmente para realizar el procesamiento de validación de tipos o máscaras. Recibe un TypeValidationEventArgs parámetro que contiene información sobre la conversión; por ejemplo, el IsValidInput miembro indica si la conversión se realizó correctamente.Una vez que se devuelve el controlador de eventos para el TypeValidationCompleted evento, se genera el evento de validación estándar, Validating, . Un controlador se puede implementar para realizar la validación estándar, quizás incluyendo la cancelación del evento.
Si el evento no se cancela en el paso 3, se genera el evento Validated de validación de control estándar.
Si la Cancel propiedad se establece true
en en el TypeValidationCompleted controlador de eventos, el evento se cancelará y el control conservará el MaskedTextBox foco, a menos que el evento subsiguiente Validating establezca su versión de la CancelEventArgs.Cancel propiedad false
en .