MaskedTextBox.ValidatingType Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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)