Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Localizable ErrorProvider

0.00/5 (No votes)
16 Nov 2010 1  
Make your ErrorProvider adhere to .NET localization standards

Introduction

The .NET ErrorProvider is a great way to tell the user that there's something wrong with the data he or she entered. However, if you are developing an application for multiple languages, it becomes very difficult to maintain the messages for the different languages.

You have to set ErrorText in code, and there is no easy way to maintain these texts, like you do for labels, buttons and the like.

Using the Code

My ErrorProvider is a subclassed ErrorProvider, that allows you to store one piece of text per control. If you want more than one message per control (e.g. "This field must be filled" and "No digits are allowed"), then you would need two ErrorProviders.

Here's an example for a form that has been marked Localizable True, with a TextBox called Email:

ControlWithErrorProvider.png

ErrorProviderInPropertyGrid.png

After you have entered text in the designer, you get generated code like this:

Private Sub InitializeComponent  
....
        Me.ErrorProvider.SetError(Me.Email, resources.GetString("Email.Error"))
        resources.ApplyResources(Me.Email, "Email")
        Me.Email.Name = "Email"
.... 

In the Validating event handler for the control, you put code like this:

Private Sub Email_Validating(ByVal sender As Object, _
	ByVal e As System.ComponentModel.CancelEventArgs) Handles Email.Validating
    If (Me.Email.TextLength = 0) _
    OrElse (Me.Email.Text.Contains("@") _
    AndAlso Me.Email.Text.Contains(".")) Then
        Me.ErrorProvider.HideError(Me.Email)
    Else
        Me.ErrorProvider.ShowError(Me.Email)
    End If
End Sub

History

  • 16 November 2010: Initial version

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here