Rubrik: Controls · TextBox & RichTextBox | VB-Versionen: VB.NET | 16.01.04 |
Eingabefehler mit dem ErrorProvider abfangen Eingabe in einer Textbox überprüfen und ggf. mit einem ErrorProvider auf Fehler hinweisen. | ||
Autor: Adrian Spörri | Bewertung: | Views: 25.600 |
www.spocrativ.ch.vu | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Die Eingabe in einer Textbox soll auf eine spezielle Bedingung überprüft werden (z.B. nur Zahlen) und der Benutzer ggf. auf einen Eingabefehler hingewiesen werden. Oft wird dies mit einer Überprüfung im KeyPress-Ereignis gelöst, bei der nur Zahlen eingegeben werden können. Der Anwender könnte aber verwirrt werden, wenn er einen Buchstaben drückt und nichts passiert in der Anwendung.
Die elegante Lösung von .NET - die ErrorProvider Klasse!
Für dieses Beispiel wird eine Form mit einer Textbox "txtIrgendwas" und einem Button "btnSchliessen" benötigt.
' Instanz der Klasse ErrorProvider erzeugen Private ErrTxtIrgendwas As New ErrorProvider
Private Sub btnSchliessen_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSchliessen.Click ' Object zerstören Me.ErrTxtIrgendwas = Nothing ' Form schliessen Me.Close() End Sub
Private Sub txtIrgendwas_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) _ Handles txtIrgendwas.KeyPress ' ErrorProvider einrichten ' ------------------------ ' Wo soll das Error Icon neben der Textbox angezeigt werden ErrTxtIrgendwas.SetIconAlignment(Me.txtIrgendwas, _ ErrorIconAlignment.MiddleRight) ' Abstand zwischen der Textbox und dem Error Icon in Pixel ErrTxtIrgendwas.SetIconPadding(Me.txtIrgendwas, 2) ' aktuelle Eingabe auf numerischen Wert überprüfen If IsNumeric(e.KeyChar) Then ' Ist i.O., Error löschen, Icon verschwindet ErrTxtIrgendwas.SetError(Me.txtIrgendwas, "") Else ' Falls nicht numerisch, Erroricon anzeigen, ' Text ausgeben, wenn Mauszeiger auf das Erroricon kommt ErrTxtIrgendwas.SetError(Me.txtIrgendwas, _ "Sie dürfen nur Zahlen eingeben") ' Zeichen unterdrücken e.Handled = True End If End Sub
Im KeyPress-Ereignis der Textbox wird nun der Errorprovider eingerichtet:
- Icon rechts neben der Textbox vorgegeben
- zwei Pixel Abstand zwischen der Textbox und dem Erroricon vorgegeben
Ein Error wird gesetzt, falls ein nicht-numerisches Zeichen eingegeben wird. In diesem Fall erscheint ein kleines Icon rechts neben der TextBox. Wollen Sie, dass das Erroricon immer blinkt? Kein Problem: Eigenschaft Blinkstyle des ErrorProviders auf AlwaysBlink setzen oder wenn es nie blinken soll auf NeverBlink setzen.