MaskedTextBox.ValidatingType Egenskap

Definition

Hämtar eller anger den datatyp som används för att verifiera dataindata från användaren.

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

Egenskapsvärde

En Type som representerar den datatyp som används vid validering. Standardvärdet är null.

Attribut

Exempel

Följande kodexempel försöker parsa användarens indata som en giltig DateTime. Om det misslyckas TypeValidationCompleted visar händelsehanteraren ett felmeddelande för användaren. Om värdet är giltigt DateTimeutför koden ytterligare en kontroll för att säkerställa att det angivna datumet inte är före dagens datum. Det här kodexemplet kräver att ditt Windows Forms projekt innehåller en MaskedTextBox-kontroll med namnet MaskedTextBox1 och en ToolTip-kontroll med namnet 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

Kommentarer

Masker garanterar inte i sig att en användares indata representerar ett giltigt värde för en viss typ. Följande C#-kod visar en mask:

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

Följande Visual Basic kod visar en mask:

MaskedTextBox1.Mask = "99/99/9999"

Den här masken kan kräva att användaren anger åtta siffror, men kan inte verifiera att användaren anger värden för månad, datum och år i rätt intervall. "12/20/2003" och "70/90/0000" är lika giltiga för masken.

Du kan använda ValidatingType för att kontrollera om de data som angetts av användaren ligger inom rätt intervall – i det tidigare nämnda fallet genom att tilldela dem en instans av DateTime typen. Den aktuella texten i kontrollen verifieras antingen när användaren lämnar kontrollen. Du kan avgöra om data misslyckas med valideringen genom att övervaka händelsen TypeValidationCompleted . MaskedTextBox utför endast kontrollen mot ValidatingType om MaskCompleted är true.

Om du vill använda dina egna anpassade datatyper med ValidatingTypemåste du implementera en statisk Parse metod som tar en sträng som en parameter. Den här metoden måste implementeras med en eller båda av följande signaturer:

public static Object Parse(string)

public static Object Parse(string, IFormatProvider)

Gäller för

Se även