C# – Allow only alphanumeric in textbox


I have a textbox that should disallow entering any special characters.

The user can enter :

  1. A-Z
  2. a-z
  3. 0-9
  4. Space

How can I make the KeyDown event to do this?

Best Solution

Handling the KeyDown or KeyPress events is one way to do this, but programmers usually forget that a user can still copy-and-paste invalid text into the textbox.

A somewhat better way is to handle the TextChanged event, and strip out any offending characters there. This is a bit more complicated, as you have to keep track of the caret position and re-set it to the appropriate spot after changing the box's Text property.

Depending on your application's needs, I would just let the user type in whatever they want, and then flag the textbox (turn the text red or something) when the user tries to submit.