MaskedTextBox.ValidatingType Propiedad

Definición

Obtiene o establece el tipo de datos utilizado para comprobar la entrada de datos por parte del usuario.Gets or sets the data type used to verify the data input by the user.

public:
 property Type ^ ValidatingType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.Browsable(false)]
public Type ValidatingType { get; set; }
member this.ValidatingType : Type with get, set
Public Property ValidatingType As Type

Valor de propiedad

Type que representa el tipo de datos utilizado en la validación.A Type representing the data type used in validation. El valor predeterminado es null.The default is null.

Atributos

Ejemplos

En el ejemplo de código siguiente se intenta analizar la entrada del usuario como un DateTimeválido.The following code example attempts to parse the user's input as a valid DateTime. Si se produce un error, el controlador de eventos TypeValidationCompleted muestra un mensaje de error al usuario.If it fails, the TypeValidationCompleted event handler displays an error message to the user. Si el valor es un DateTimeválido, el código realiza una comprobación adicional para asegurarse de que la fecha proporcionada no sea anterior a la fecha de hoy.If the value is a valid DateTime, the code performs an additional check to ensure that the date supplied is not prior to today's date. Este ejemplo de código requiere que el proyecto de Windows Forms contenga un control MaskedTextBox denominado MaskedTextBox1 y un control ToolTip denominado ToolTip1.This code example requires that your Windows Forms project contains a MaskedTextBox control named MaskedTextBox1 and a ToolTip control named 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

En sí, las máscaras no garantizan que la entrada de un usuario represente un valor válido para un tipo determinado.Masks do not in themselves guarantee that a user's input will represent a valid value for a given type. En el C# código siguiente se muestra una máscara:The following C# code shows a mask:

maskedTextBox1.Mask = "99/99/9999";  

En el siguiente código de Visual Basic se muestra una máscara:The following Visual Basic code shows a mask:

MaskedTextBox1.Mask = "99/99/9999"

Esta máscara puede requerir que el usuario escriba ocho dígitos, pero no puede comprobar que el usuario escribe los valores de mes, fecha y año en el intervalo correcto; "12/20/2003" y "70/90/0000" son igualmente válidos en lo que respecta a la máscara.This mask can demand that the user enter eight digits, but cannot verify that the user enters month, date, and year values in the correct range; "12/20/2003" and "70/90/0000" are equally valid as far as the mask is concerned.

Puede usar ValidatingType para comprobar si los datos especificados por el usuario se encuentran dentro del intervalo correcto: en el caso mencionado anteriormente, asignándole una instancia del tipo de DateTime.You can use ValidatingType to verify whether the data entered by the user falls within the correct range - in the previously mentioned case, by assigning it an instance of the DateTime type. El texto actual del control se validará cuando el usuario abandone el control.The current text in the control will be validated either when the user leaves the control. Puede determinar si se produce un error en la validación de los datos mediante la supervisión del evento TypeValidationCompleted.You can determine whether or not the data fails validation by monitoring for the TypeValidationCompleted event. MaskedTextBox solo realizará la comprobación en ValidatingType si se trueMaskCompleted.MaskedTextBox will only perform the check against ValidatingType if MaskCompleted is true.

Si desea utilizar sus propios tipos de datos personalizados con ValidatingType, debe implementar un método de Parse estático que toma una cadena como parámetro.If you want to use your own custom data types with ValidatingType, you must implement a static Parse method that takes a string as a parameter. Este método debe implementarse con una o las dos firmas siguientes:This method must be implemented with one or both of the following signatures:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

Se aplica a

Consulte también: