MaskedTextBox.ValidatingType Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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)