![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
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.
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
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
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.
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.
![]() |