Compartilhar via


MaskedTextBox.ValidatingType Propriedade

Definição

Obtém ou define o tipo de dados usado para verificar a entrada de dados pelo usuário.

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

Valor da propriedade

Um Type que representa o tipo de dados usado na validação. O padrão é null.

Atributos

Exemplos

O exemplo de código a seguir tenta analisar a entrada do usuário como um válido DateTime. Se falhar, o TypeValidationCompleted manipulador de eventos exibirá uma mensagem de erro para o usuário. Se o valor for válidoDateTime, o código executará uma marcar adicional para garantir que a data fornecida não seja anterior à data de hoje. Este exemplo de código requer que seu projeto Windows Forms contenha um MaskedTextBox controle chamado MaskedTextBox1 e um ToolTip controle chamado 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

Comentários

As máscaras por si só não garantem que a entrada de um usuário represente um valor válido para um determinado tipo. O seguinte código C# mostra uma máscara:

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

O seguinte código do Visual Basic mostra uma máscara:

MaskedTextBox1.Mask = "99/99/9999"

Essa máscara pode exigir que o usuário insira oito dígitos, mas não pode verificar se o usuário insere valores de mês, data e ano no intervalo correto; "20/12/2003" e "70/90/0000" são igualmente válidos no que diz respeito à máscara.

Você pode usar ValidatingType para verificar se os dados inseridos pelo usuário estão dentro do intervalo correto – no caso mencionado anteriormente, atribuindo-lhe uma instância do DateTime tipo. O texto atual no controle será validado quando o usuário deixar o controle. Você pode determinar se os dados falham ou não na validação monitorando o TypeValidationCompleted evento. MaskedTextBoxsó executará o marcar em ValidatingType se MaskCompleted for true.

Se você quiser usar seus próprios tipos de dados personalizados com ValidatingType, deverá implementar um método estático Parse que usa uma cadeia de caracteres como um parâmetro. Esse método deve ser implementado com uma ou ambas as seguintes assinaturas:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

Aplica-se a

Confira também