MaskedTextBox.ValidatingType Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt het gegevenstype opgehaald of ingesteld dat wordt gebruikt om de gegevensinvoer door de gebruiker te verifiëren.
public:
property Type ^ ValidatingType { Type ^ get(); void set(Type ^ value); };
[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
Waarde van eigenschap
Een Type weergave van het gegevenstype dat in de validatie wordt gebruikt. De standaardwaarde is null.
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld wordt geprobeerd de invoer van de gebruiker te parseren als een geldige DateTimewaarde. Als dit mislukt, geeft de TypeValidationCompleted gebeurtenis-handler een foutbericht weer aan de gebruiker. Als de waarde een geldige DateTimewaarde is, voert de code een extra controle uit om ervoor te zorgen dat de opgegeven datum niet vóór de datum van vandaag valt. Voor dit codevoorbeeld moet uw Windows Forms project een besturingselement MaskedTextBox met de naam MaskedTextBox1 en een besturingselement ToolTip met de naam ToolTip1 bevatten.
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
Opmerkingen
Maskers garanderen niet dat de invoer van een gebruiker een geldige waarde voor een bepaald type vertegenwoordigt. De volgende C#-code toont een masker:
maskedTextBox1.Mask = "99/99/9999";
In de volgende Visual Basic code wordt een masker weergegeven:
MaskedTextBox1.Mask = "99/99/9999"
Dit masker kan eisen dat de gebruiker acht cijfers invoert, maar niet kan verifiëren dat de gebruiker de waarden maand, datum en jaar in het juiste bereik invoert; "20-12-2003" en "70-90-0000" zijn even geldig voor wat betreft het masker.
U kunt gebruiken ValidatingType om te controleren of de gegevens die door de gebruiker zijn ingevoerd, binnen het juiste bereik vallen, in het eerder genoemde geval door het toe te wijzen aan een exemplaar van het DateTime type. De huidige tekst in het besturingselement wordt gevalideerd wanneer de gebruiker het besturingselement verlaat. U kunt bepalen of de gegevens niet kunnen worden gevalideerd door de TypeValidationCompleted gebeurtenis te controleren.
MaskedTextBox voert alleen de controle uit als ValidatingTypeMaskCompleted dat het is true.
Als u uw eigen aangepaste gegevenstypen ValidatingTypewilt gebruiken, moet u een statische Parse methode implementeren die een tekenreeks als parameter gebruikt. Deze methode moet worden geïmplementeerd met een of beide van de volgende handtekeningen:
public static Object Parse(string)
public static Object Parse(string, IFormatProvider)