Condividi tramite


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)]
public Type? ValidatingType { get; set; }
[<System.ComponentModel.Browsable(false)>]
member this.ValidatingType : Type with get, set
Public Property ValidatingType As Type

Valore della proprietà

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

Attributi

Esempio

Nell'esempio di codice seguente viene eseguito un tentativo di analizzare l'input dell'utente come valido DateTime. Se ha esito negativo, il TypeValidationCompleted gestore eventi visualizza un messaggio di errore all'utente. Se il valore è valido DateTime, il codice esegue un controllo aggiuntivo per assicurarsi che la data specificata non sia precedente alla data odierna. Questo esempio di codice richiede che il progetto Windows Forms contenga un MaskedTextBox controllo denominato MaskedTextBox1 e un ToolTip controllo denominato 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 in 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 che l'utente immetta otto cifre, ma non può verificare che l'utente immetta i valori di mese, data e anno nell'intervallo corretto; "12/20/2003" e "70/90/0000" sono ugualmente validi per quanto riguarda la maschera.

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

Se si desidera usare i propri tipi di dati personalizzati con ValidatingType, è necessario implementare un metodo statico Parse che accetta una stringa come 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