MaskedTextBox.ValidatingType Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou define o tipo de dado usado para verificar os dados introduzidos pelo utilizador.
public:
property Type ^ ValidatingType { Type ^ get(); void set(Type ^ value); };
[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 de Propriedade
A Type representa o tipo de dado utilizado na validação. A predefinição é null.
- Atributos
Exemplos
O seguinte exemplo de código tenta analisar a entrada do utilizador como válida DateTime. Se falhar, o TypeValidationCompleted gestor de eventos mostra uma mensagem de erro ao utilizador. Se o valor for válido DateTime, o código realiza uma verificação adicional para garantir que a data fornecida não é anterior à data de hoje. Este exemplo de código exige que o seu projeto Windows Forms contenha um controlo MaskedTextBox chamado MaskedTextBox1 e um controlo ToolTip 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
Observações
As máscaras, por si só, não garantem que a entrada de um utilizador represente um valor válido para um dado 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"
Esta máscara pode exigir que o utilizador insira oito dígitos, mas não pode verificar se o utilizador insere os valores do mês, data e ano no intervalo correto; "12/20/2003" e "70/90/0000" são igualmente válidos no que diz respeito à máscara.
Pode usar ValidatingType para verificar se os dados introduzidos pelo utilizador se enquadram no intervalo correto – no caso mencionado anteriormente, atribuindo-lhes uma instância do DateTime tipo. O texto atual no controlo será validado quando o utilizador sai do controlo. Pode determinar se os dados falham ou não a validação monitorizando o TypeValidationCompleted evento.
MaskedTextBox Só fará a verificação contra ValidatingType se MaskCompleted for true.
Se quiser usar os seus próprios tipos de dados personalizados com ValidatingType, deve implementar um método estático Parse que receba uma string como parâmetro. Este método deve ser implementado com uma ou ambas as seguintes assinaturas:
public static Object Parse(string)
public static Object Parse(string, IFormatProvider)