MaskedTextBox.ValidatingType Vlastnost

Definice

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)

Platí pro

Viz také