MaskedTextBox.ValidatingType Propriété

Définition

Obtient ou définit le type de données utilisé pour vérifier les données entrées par l'utilisateur.

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

Valeur de propriété

Type représentant le type de données utilisé dans la validation. La valeur par défaut est null.

Attributs

Exemples

L’exemple de code suivant tente d’analyser l’entrée de l’utilisateur en tant que valide DateTime. En cas d’échec, le TypeValidationCompleted gestionnaire d’événements affiche un message d’erreur à l’utilisateur. Si la valeur est valide DateTime, le code effectue une case activée supplémentaire pour s’assurer que la date fournie n’est pas antérieure à la date d’aujourd’hui. Cet exemple de code nécessite que votre projet Windows Forms contienne un MaskedTextBox contrôle nommé MaskedTextBox1 et un ToolTip contrôle nommé 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

Remarques

Les masques ne garantissent pas en eux-mêmes que l’entrée d’un utilisateur représente une valeur valide pour un type donné. Le code C# suivant montre un masque :

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

Le code Visual Basic suivant montre un masque :

MaskedTextBox1.Mask = "99/99/9999"

Ce masque peut exiger que l’utilisateur entre huit chiffres, mais ne peut pas vérifier que l’utilisateur entre les valeurs de mois, de date et d’année dans la plage correcte . « 20/12/2003 » et « 70/90/0000 » sont tout aussi valables en ce qui concerne le masque.

Vous pouvez utiliser ValidatingType pour vérifier si les données entrées par l’utilisateur se situent dans la plage correcte , dans le cas mentionné précédemment, en lui attribuant une instance du DateTime type . Le texte actuel dans le contrôle est validé lorsque l’utilisateur quitte le contrôle. Vous pouvez déterminer si les données échouent ou non à la validation en surveillant l’événement TypeValidationCompleted . MaskedTextBoxeffectue uniquement le case activée par rapport ValidatingType à si MaskCompleted est true.

Si vous souhaitez utiliser vos propres types de données personnalisés avec ValidatingType, vous devez implémenter une méthode statique Parse qui prend une chaîne comme paramètre. Cette méthode doit être implémentée avec une ou les deux signatures suivantes :

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

S’applique à

Voir aussi