====================================================
In diesem Tutorial zeige ich euch, wie wir den ErrorProvider zur Geltung bringen.
===================================
===================================
Der ErrorProvider ist sinnvoll, um den nutzen ihre fehler zu zeigen,
damit diese den fehler bessern können.
In diesem Beispiel wird der Inhalt der Textboxen eines Formulares bei
jedem Tastendruck überprüft. Bei der ersten Textbox wird ein Regülärer
Ausdruck benutzt um festzustellen, ob es sich um eine gültige Email-
Adresse andelt, bei der zweiten Textbox wird geprüft, ob wirklich eine
Zahl eingegeben wurde.
===================================
===================================
•Was wir brauchen
- 2x Label (Label1.Text = Email:, Label2.Text = Preis(€):
- 1x Button (Text = OK)
- 1x ErrorProvider
===================================
===================================


===================================
===================================
Zuerst kommt über die Public Class Form1 dieser Text:
ZitatImports System.Text.RegularExpressions
Gültigkeit der Email-Adresse mit Hilfe eines Regülären Ausdrucks prüfen(Textbox1):
ZitatPrivate Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim ctrl As Control = CType(sender, Control)
Dieser Ausdruck definiert die Grundstrucktur einer Email-Adresse:
ZitatDim regex As New Regex("\S+@\S+\.\S+")
Fals der eingegebene Text gültig ist, wird eine evtl. vorhandene Fehlermeldung
vom ErrorProvider enfernt:
ZitatIf regex.IsMatch(ctrl.Text) Then
ErrorProvider1.SetError(ctrl, String.Empty)
Falls die Überprüfung fehlschlägt, wird unter Verwendung der Errorprovider.SetError-
Methode eine Fehlermeldung generiert und ein Error-Icon erscheint neben dem Control:
ZitatElse
ErrorProvider1.SetError(ctrl, "Das ist keine gültige E-Mail Addresse!")
End If
End Sub
Anschließend kommt dieser Text, um die Zahlen nur zuzulassen(Textbox2):
ZitatAlles anzeigenPrivate preis As Decimal = 0
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
Dim ctrl As Control = CType(sender, Control)
Try
preis = Decimal.Parse(TextBox2.Text)
ErrorProvider1.SetError(ctrl, String.Empty)
Catch
ErrorProvider1.SetError(ctrl, "Das ist keine gültige Zahl!")
End Try
End Sub
Schließlich durchläuft der Click-Eventhandler des "OK"-Buttons alle Controls des Formulares
und überprüft, ob ihre Inhalte fehlerfrei sind, bevor die Anwendung geschlossen werden kann(Button1):
ZitatAlles anzeigenPrivate nl As String = Environment.NewLine
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim errorText As String = String.Empty
Dim invalidInput As Boolean = FalseFor Each ctrl As Control In Me.Controls
If ErrorProvider1.GetError(ctrl) <> String.Empty Then
errorText &= " - " & ErrorProvider1.GetError(ctrl) & nl
invalidInput = True
End If
Next ctrlIf invalidInput Then
MessageBox.Show("Das Formular enthält unbehandelte Fehler:" & nl & errorText, _
"Fehlerhafte Eingabe", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
Me.Close()
End If
End Sub
===================================
===================================
Hier nochmalder Gesamte SourceCode:
ZitatAlles anzeigenImports System.Text.RegularExpressions
Public Class Form1
' Gültigkeit der EMail-Adresse prüfen:
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim ctrl As Control = CType(sender, Control)
Dim regex As New Regex("\S+@\S+\.\S+")
If regex.IsMatch(ctrl.Text) Then
ErrorProvider1.SetError(ctrl, String.Empty)
Else
ErrorProvider1.SetError(ctrl, "Das ist keine gültige E-Mail Addresse!")
End If
End Sub
' Nur Zahleneingaben zulassen:
Private preis As Decimal = 0
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
Dim ctrl As Control = CType(sender, Control)
Try
preis = Decimal.Parse(TextBox2.Text)
ErrorProvider1.SetError(ctrl, String.Empty)
Catch
ErrorProvider1.SetError(ctrl, "Das ist keine gültige Zahl!")
End Try
End SubPrivate nl As String = Environment.NewLine
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim errorText As String = String.Empty
Dim invalidInput As Boolean = FalseFor Each ctrl As Control In Me.Controls
If ErrorProvider1.GetError(ctrl) <> String.Empty Then
errorText &= " - " & ErrorProvider1.GetError(ctrl) & nl
invalidInput = True
End If
Next ctrlIf invalidInput Then
MessageBox.Show("Das Formular enthält unbehandelte Fehler:" & nl & errorText, _
"Fehlerhafte Eingabe", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
Me.Close()
End If
End Sub
End Class
===================================
===================================
Credits: Sedrika