Show Sitemap ..Help2HTMLHelpWinHelp

Mit ErrorProvidern arbeiten

Windows Forms unterstützt ErrorProvider Hilfe bei Steuerelementen für eine Gültigkeitsprüfung der Dateneingabe. Normalerweise geht eine Gültigkeitsprüfung kaum über die Prüfung der Maximallänge für die Textbox hinaus. Aber dies ist eine nette Methode, die Sie verwenden können, um die Gültigkeitsprüfung etwas frischer zu gestalten.

Wenn ein Fehler in der Gültigkeitsprüfung auftaucht, tritt das rote Fehlersymbol auf und man kann den Mauszeiger darüber schweben lassen, um einen Tooltip mit Information über das ungültige Feld zu erhalten. Die Fehlersymbolmethode ist viel besser als ein angezeigtes Hinweisfenster, weil das eine unnötige Unterbrechung wäre. So bekommen wir eine Methode, die auf eine unaufdringliche Weise zeigt, dass Daten ungültig sind und wegen dieser Anzeigeart wird sofort offensichtlich, was falsch ist und was darüber hinaus zu tun ist.

Um ErrorProvider Hilfe in Ihrer Anwendung zu unterstützen, müssen Sie die ErrorProvider Komponente verwenden, welche Sie in der Toolbox auf der Windows Forms Registerkarte finden können. Ziehen Sie dazu eine ErrorProvider Komponente auf Ihr Formular. Es ist mehr eine Komponente als ein Steuerelement und es sitzt deshalb im unteren Rahmen für die Komponenten, wenn Sie es auf Ihr Formular ziehen. Benennen Sie diese Komponente in "erpProvider1" um. Diese Komponente gibt jedem Steuerelement des Formulars eine neue Eigenschaft die Error auf erpProvider1 genannt wird.

Sie können die Error auf erpProvider1 Eigenschaft des Feldes ZipCode auf "Please enter 5 digits" setzen, aber dies ist nicht der wirkliche Sinn der ErrorProvider Komponente. Sie sehen zwar das rote Symbol aber dieselbe Wirkung hätten Sie auch mit einer ToolTip Komponente erreicht..

Es ist daher besser eine Ereignisroutine für die TextBox auf dem Formular zu erstellen und dieser den folgenden Code hinzuzufügen. Um den Fehlerhinweis zu löschen, übergeben Sie einfach eine leere Zeichenfolge.

Visual Basic Code

 

Private Sub cmdInputValidation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdInputValidation.Click
    Dim sAddressEmail As String = txtAddressEmail.Text
    Dim sAddressZipCode As String = txtAddressZipCode.Text
    Dim sAddressTownName As String = txtAddressTownName.Text
    Dim sMessage As String
    Dim IsValidationError As Boolean = False

    '----- set error message when @ is missing -----
    If InStr(sAddressEmail, "@") = 0 Then
      erpProvider1.SetError(Me.txtAddressEmail, "Missing '@' - Please enter the complete e-mail address")
      IsValidationError = True
    Else
      erpProvider1.SetError(Me.txtAddressEmail, "")
    End If

    '----- input validation of ZipCode -----
    If Not IsNumeric(sAddressZipCode) Or Len(sAddressZipCode) <> 5 Then
      erpProvider1.SetError(Me.txtAddressZipCode, "Please enter 5 digits")
      IsValidationError = True
    Else
      erpProvider1.SetError(Me.txtAddressZipCode, "")
    End If

    '----- set error message when len = 0 -----
    If Len(Trim(sAddressTownName)) = 0 Then
      erpProvider1.SetError(Me.txtAddressTownName, "Please enter the town name")
      IsValidationError = True
    Else
      erpProvider1.SetError(Me.txtAddressTownName, "")
    End If

    '--- Continue when all the text boxes are valid
    If IsValidationError = True Then
      sMessage = sAddressEmail & " " & sAddressZipCode & " " & sAddressTownName
      MessageBox.Show(sMessage, "Error occured - Stop processing code")
      Exit Sub
    End If

    sMessage = sAddressEmail & " " & sAddressZipCode & " " & sAddressTownName
    MessageBox.Show(sMessage, "No Error occured - Continue processing code")

  End Sub

Eine andere Lösung einen Fehler der Steuerelemente zu prüfen

Dim ctrl As Control
Dim sErrorList As Strimg


sErrorList = ""
For Each ctrl In Me.Controls
   If Len(ErrorProvider1.GetError(ctrl)) > 0 Then
      sErrorList += ErrorProvider1.GetError(ctrl) & ChrW(10) & ChrW(13)
   End If
Next

If Len(sErrorList) = 0 Then
   ' Process stuff if no errors
Else
   Messagebox.Show(sErrorList, "List Of Errors")
End If

Hinweis

Sie können auch einen zweiten Fehlerprovider auf Ihrem Formular mit gelben statt mit rotem Symbol benutzen (vom Entwickler definiert), wenn ein Feld gültig ist aber noch verbessert werden könnte.

 

Download Beispiel

Wenn Sie kein Visual Studio NET besitzen aber das Microsoft NET Framework 1.0 installiert haben (z.B. von der CD-Version des Windows XP SP1) können Sie das Beispiel für Visual Basic 2002 entpacken und die Datei VBnetCHM.exe im Unterverzeichnis "../bin" doppelklicken.

 

Top ...