Show Sitemap ..Help2HTMLHelpWinHelp
Home ..

Working with Error Providers

Windows Forms supports ErrorProvider help on controls for data input validation. Normally validation doesn't go much further than a check of the maximum length for textboxes, But this is a nice method you can use to make validation a breeze.

When a validation error appears the red error icon occurs and one can hover it for a tooltip with information about the invalid field. The error icon method is much better than a message box pop-up, because that would be an unnecessary interruption. So we get a method of unobtrusively showing that data is invalid, and presenting it in such a way that it is immediately obvious what is wrong and what to do about it.

To provide ErrorProvider help in your application, you have to use the ErrorProvider component which you can find in the Toolbox on the Windows Forms tab. Drag and Drop a ErrorProvider component from the Toolbox to your form. It is a component rather than a control, so when you put it on your form it will sit in the component tray below. Rename this component to "erpProvider1". This component gives every control on the form a new property called Error on erpProvider1.

You can set the Error on erpProvider1 property of the ZipCode field to "Please enter 5 digits" but this isn't really the intent of the ErrorProvider component. You see the red icon and the same effect could be achieved with a ToolTip component.

The better idea is t create an event handler for the TextBox on the form and add the following code to it. To clear the error , simply pass an empty string.

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

Another solution to check the controls error

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

Note

You can have a second error provider on your form with a yellow icon (developer defined) rather than red, for when a field is valid but could be entered better.

 

Download Example

Unfortunately, you don't have Visual Studio .NET but you have installed the Microsoft .NET Framework 1.0 (e.g. from your CD-Version of Windows XP SP1) unzip the example for Visual Studio 2002 and double-click the file VBnetCHM.exe.

 

Top ...