Comparteix a través de


MaskedTextBox.TypeValidationCompleted Evento

Definición

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 nulles , se produce la siguiente serie de eventos:

  1. La secuencia de validación comienza cuando se produce una de las siguientes acciones:

  2. 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.

  3. 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.

  4. 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.

  5. 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 falseen .

Se aplica a

Consulte también