MaskedTextBox.ValidatingType Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví datový typ použitý k ověření vstupu dat uživatelem.
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
Hodnota vlastnosti
A Type představující datový typ použitý při ověřování. Výchozí formát je null
.
- Atributy
Příklady
Následující příklad kódu se pokusí analyzovat vstup uživatele jako platný DateTime. Pokud selže, obslužná TypeValidationCompleted rutina události zobrazí uživateli chybovou zprávu. Pokud je hodnota platná DateTime, kód provede další kontrolu, aby se zajistilo, že zadané datum není před dnešním datem. Tento příklad kódu vyžaduje, aby projekt model Windows Forms obsahoval MaskedTextBox ovládací prvek s názvem MaskedTextBox1
a ToolTip ovládací prvek s názvem 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
Poznámky
Masky samy o sobě nezaručují, že vstup uživatele bude představovat platnou hodnotu pro daný typ. Následující kód jazyka C# zobrazuje masku:
maskedTextBox1.Mask = "99/99/9999";
Následující kód jazyka Visual Basic zobrazuje masku:
MaskedTextBox1.Mask = "99/99/9999"
Tato maska může požadovat, aby uživatel zadal osm číslic, ale nemůže ověřit, že uživatel zadá hodnoty měsíce, data a roku ve správném rozsahu; "20.12.2003" a "70/90/0000" jsou stejně platné, pokud jde o masku.
Můžete použít ValidatingType k ověření, jestli data zadaná uživatelem spadají do správného rozsahu – v dříve uvedeném případě tím, že jim přiřadíte instanci DateTime typu. Aktuální text v ovládacím prvku se ověří buď při opuštění ovládacího prvku uživatelem. Pokud chcete zjistit, jestli se ověření dat nezdaří, můžete zjistit monitorováním TypeValidationCompleted události.
MaskedTextBox provede kontrolu ValidatingType pouze v případě, že MaskCompleted je true
.
Pokud chcete použít vlastní datové typy s ValidatingType, musíte implementovat statickou Parse
metodu, která přebírá řetězec jako parametr. Tato metoda musí být implementována s jedním nebo oběma následujícími podpisy:
public static Object Parse(string)
public static Object Parse(string, IFormatProvider)