MaskedTextBox.ValidatingType Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft den Datentyp ab, der verwendet wird, um die Dateneingabe durch den Benutzer zu überprüfen, oder legt diesen fest.
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
Eigenschaftswert
Ein Type, der den bei der Validierung verwendeten Datentyp darstellt. Der Standardwert ist null
.
- Attribute
Beispiele
Im folgenden Codebeispiel wird versucht, die Eingabe des Benutzers als gültig DateTimezu analysieren. Wenn ein Fehler auftritt, zeigt der TypeValidationCompleted Ereignishandler dem Benutzer eine Fehlermeldung an. Wenn der Wert gültig DateTimeist, führt der Code eine zusätzliche Überprüfung durch, um sicherzustellen, dass das angegebene Datum nicht vor dem heutigen Datum liegt. Dieses Codebeispiel erfordert, dass Ihr Windows Forms-Projekt ein MaskedTextBox Steuerelement mit dem Namen MaskedTextBox1
und ein ToolTip Steuerelement mit dem Namen ToolTip1
enthält.
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
Hinweise
Masken garantieren an sich nicht, dass die Eingabe eines Benutzers einen gültigen Wert für einen bestimmten Typ darstellt. Der folgende C#-Code zeigt eine Maske an:
maskedTextBox1.Mask = "99/99/9999";
Der folgende Visual Basic-Code zeigt eine Maske an:
MaskedTextBox1.Mask = "99/99/9999"
Diese Maske kann erfordern, dass der Benutzer acht Ziffern eingibt, kann aber nicht überprüfen, ob der Benutzer Monats-, Datums- und Jahreswerte im richtigen Bereich eingibt. "20.12.2003" und "70/90/0000" gelten für die Maske gleichermaßen.
Sie können verwendenValidatingType, um zu überprüfen, ob die vom Benutzer eingegebenen Daten innerhalb des richtigen Bereichs liegen – im zuvor erwähnten Fall, indem Sie ihm eine instance des DateTime Typs zuweisen. Der aktuelle Text im Steuerelement wird entweder überprüft, wenn der Benutzer das Steuerelement verlässt. Sie können feststellen, ob die Überprüfung der Daten fehlschlägt, indem Sie das TypeValidationCompleted Ereignis überwachen.
MaskedTextBox führt die Überprüfung nur dann aus ValidatingType , wenn MaskCompleted ist true
.
Wenn Sie Ihre eigenen benutzerdefinierten Datentypen mit ValidatingTypeverwenden möchten, müssen Sie eine statische Parse
Methode implementieren, die eine Zeichenfolge als Parameter verwendet. Diese Methode muss mit einer oder beiden der folgenden Signaturen implementiert werden:
public static Object Parse(string)
public static Object Parse(string, IFormatProvider)