MaskedTextBox.ValidatingType Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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)