MaskedTextBox.ValidatingType Proprietà

Definizione

Ottiene o imposta il tipo di dati utilizzato per verificare l'input di dati dell'utente.

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

Valore della proprietà

Type

Oggetto Type che rappresenta il tipo di dati utilizzato nella convalida. Il valore predefinito è null.

Attributi

Esempio

L'esempio di codice seguente tenta di analizzare l'input dell'utente come DateTime valido. Se non riesce, il TypeValidationCompleted gestore eventi visualizza un messaggio di errore all'utente. Se il valore è valido, il codice esegue un controllo aggiuntivo per assicurarsi che la data specificata non sia precedente alla DateTime data odierna. Questo esempio di codice richiede che il progetto Windows Forms contenga un controllo MaskedTextBox denominato e un controllo denominato MaskedTextBox1 ToolTip 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

Commenti

Le maschere non garantiscono di per sé che l'input di un utente rappresenti un valore valido per un determinato tipo. Il codice C# seguente mostra una maschera:

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

Il codice Visual Basic seguente mostra una maschera:

MaskedTextBox1.Mask = "99/99/9999"

Questa maschera può richiedere all'utente di immettere otto cifre, ma non può verificare che l'utente immissione di valori di mese, data e anno nell'intervallo corretto. "20/12/2003" e "70/90/0000" sono ugualmente validi per quanto riguarda la maschera.

È possibile usare per verificare se i dati immessi dall'utente rientrano nell'intervallo corretto, nel caso indicato in precedenza, assegnando un'istanza ValidatingType del DateTime tipo. Il testo corrente nel controllo verrà convalidato quando l'utente lascia il controllo. È possibile determinare se la convalida dei dati non riesce monitorando TypeValidationCompleted l'evento. MaskedTextBox eseguirà il controllo solo su ValidatingType se MaskCompleted è true .

Se si vogliono usare tipi di dati personalizzati con , è necessario implementare un metodo statico che ValidatingType accetta una stringa come Parse parametro. Questo metodo deve essere implementato con una o entrambe le firme seguenti:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

Si applica a

Vedi anche