In this tutorial, we will walk you through the process of creating a TextBox control in a C# Windows Forms application that only accepts letters (A-Z and a-z). This can be useful for scenarios where you want to restrict user input to alphabetic characters, such as when collecting names or other text data that should not contain numbers or special symbols.
We will break down the process into step-by-step instructions, and by the end of this tutorial, you will have a functional TextBox that filters out any characters other than letters.
Step 1: Create a New Windows Forms Project
Start by creating a new Windows Forms project in C# using your preferred integrated development environment (IDE) such as Visual Studio or Visual Studio Code. Name your project and select the appropriate location for it.
Step 2: Add a TextBox Control to the Form
Open the main form in the designer and drag and drop a TextBox control from the toolbox onto the form.
Step 3: Handle the KeyPress Event
To restrict input to only letters, you will need to handle the KeyPress
event of the TextBox control. Double-click on the TextBox control in the designer to create an event handler for it. This will generate a method in your code-behind file that handles the KeyPress
event.
C# Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { // Check if the entered character is not a letter if (Regex.IsMatch(e.KeyChar.ToString(), @"^[a-zA-Z\s\b]")) { e.Handled = false; // input ok } else { e.Handled = true; // input denied } } |
Now, let’s break down what this code accomplishes:
- The
textBox1_KeyPress
event handler is triggered every time a key is pressed withintextBox1
, which is our TextBox control. - Inside the event handler, we use the
Regex.IsMatch
method to evaluate whether the entered character (represented bye.KeyChar
) matches a specific regular expression pattern. - The regular expression pattern
^[a-zA-Z\s\b]
is designed to permit only letters (both lowercase and uppercase) and space characters (for separating words) in the input. The\b
is a word boundary, ensuring that input such as “123abc” is blocked, as it contains non-letter characters. - If the condition in the
if
statement is met, indicating that the character is a letter or a space, we sete.Handled
tofalse
. This allows the character to be added to the TextBox. - Conversely, if the condition is not met (i.e., the character is not a letter or space), we set
e.Handled
totrue
. This effectively denies the character from being entered into the TextBox.
Conclusion:
By leveraging regular expressions, we have implemented a more sophisticated TextBox input validation mechanism. It now allows only letters and spaces while blocking other characters, providing enhanced control over user input. This approach is beneficial for scenarios where data must adhere to specific formatting or content requirements, such as names or addresses. Regular expressions offer a powerful tool for managing complex input validation in C# applications.