MaskedTextBox.ValidatingType Propriedade

Definição

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

[System.ComponentModel.Browsable(false)]
public Type ValidatingType { get; set; }
[System.ComponentModel.Browsable(false)]
public Type? ValidatingType { get; set; }

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);
}

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

Produto Versões
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Confira também