![]() |
Tipp 0175
|
Datumsvalidierung mit der MaskedTextBox
|
 |
|
Autor/Einsender: Datum: |
|
Michael Werner 18.01.2008 |
|
Entwicklungsumgebung: |
|
VB.Net 2005 |
Framework: |
|
2.0 |
|
|
Die MaskedTextBox-Klasse ist ein erweitertes TextBox-Steuerelement und unterstützt
eine spezielle Syntax zum Annehmen oder Ablehnen von Benutzereingaben. Mit der
Mask-Eigenschaft können Eingabe geprüft werden, ohne aufwendig eine Validierungslogik schreiben zu müssen.
Weiterhin prüft sie die erforderlichen Eingabezeichen, aber auch optionale
Eingabezeichen und checkt den an einer angegebenen Position in der Maske erwarteten Eingabetyp,
beispielsweise eine Ziffer, ein alphabetisches oder ein alphanumerisches Zeichen.
|
Das Steuerelement unterstützt darüber hinaus feste Vorgaben, wie z.B. Bindestriche in Telefonnummern,
Währungssymbole wie den Euro (€), oder aber auch Maskenliterale für Datum- und Zeiteingaben.
|
In diesem Tipp wird das Ereignis TypeValidationCompleted dazu verwendet, um zu prüfen,
ob ein gültiges Datum eingegeben wurde. Darüber hinaus wird in dieser Prozedur demonstriert,
wie man benutzerdefiniert die Datumseingabe an weitere Bedingungen knüpfen kann. In diesem
Fall werden nur zukünftige Datumseingaben akzeptiert. Das Ereignis MaskInputRejected macht eine reine Formatprüfung und tritt vor dem Ereignis
TypeValidationCompleted ein. In unserem Beispiel wird hier die Zifferneingabe kontrolliert
und entsprechend bei falscher Eingabe (z.B. ein Buchstabe) eine Fehlermeldung ausgegeben.
|
|
|
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
'Maskenformat festlegen: hier: Datum kurz (ohne Zeit)
MaskedTextBox1.Mask = "00/00/0000"
End Sub
Private Sub MaskedTextBox1_TypeValidationCompleted(ByVal sender _
As Object, ByVal e As _
System.Windows.Forms.TypeValidationEventArgs) _
Handles MaskedTextBox1.TypeValidationCompleted
'Gültiges Datum?
If (Not e.IsValidInput) Then
MessageBox.Show("Bitte ein gültiges Datum eingeben!" & _
vbNewLine & "Format <dd.mm.YYYY>, z.B. <01.03.2007>", _
"Invalides Datum!")
ElseIf (CDate(e.ReturnValue) < DateTime.Now) Then
'Nur zukünfiges Datum zulassen
MessageBox.Show("Bitte nur zukünftige Datumsangaben "_
"machen!", "Nur zukünftiges Datum ist zulässig")
e.Cancel = True
Else
MessageBox.Show("Ihre Eingabe wird weiterverarbeitet: " & _
CDate(e.ReturnValue), "Danke. Ok")
Close()
End If
End Sub
Private Sub MaskedTextBox1_MaskInputRejected(ByVal sender As _
System.Object, ByVal e As _
System.Windows.Forms.MaskInputRejectedEventArgs) Handles _
MaskedTextBox1.MaskInputRejected
If (Me.MaskedTextBox1.MaskFull) Then
'MessageBox.Show("Sie können keine weitere Daten eingeben!")
ElseIf (e.Position = Me.MaskedTextBox1.Mask.Length) Then
'MessageBox.Show("Keine weitere Dateneingabe mehr!")
Else
'Hinweis auf Nur Ziffern-Eingabe
MessageBox.Show("Nur numerische Werte (Ziffern 0-9) in das "_
"Feld eingaben.", "Nur Ziffern bitte (Datum)!")
End If
End Sub |
|
|
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (18,7
kB)
|
Downloads bisher: [ 264 ]
|
|
|