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

Představuje Type datový typ použitý při ověřování. Výchozí hodnota je null.

Atributy

Příklady

Následující příklad kódu se pokusí analyzovat vstup uživatele jako platný DateTime. Pokud selže, TypeValidationCompleted obslužná rutina události uživateli zobrazí 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 váš projekt model Windows Forms obsahuje ovládací prvek pojmenovaný MaskedTextBoxMaskedTextBox1 a pojmenovaný ToolTipToolTip1ovládací prvek .

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# ukazuje masku:

maskedTextBox1.Mask = "99/99/9999";

Následující kód Visual Basic ukazuje masku:

MaskedTextBox1.Mask = "99/99/9999"

Tato maska může požadovat, aby uživatel zadal osm číslic, ale nemůže ověřit, zda uživatel zadá hodnoty měsíce, data a roku do správného rozsahu; "12/20/2003" a "70/90/0000" jsou stejně platné, pokud jde o masku.

Můžete použít ValidatingType k ověření, zda data zadaná uživatelem spadají do správného rozsahu – v dříve zmíněném případě tím, že je přiřadíte instanci DateTime typu. Aktuální text v ovládacím prvku se ověří, a to buď po opuštění ovládacího prvku uživatelem. Monitorováním TypeValidationCompleted události můžete určit, jestli data selhala nebo ne. 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é