banupriya
banupriya

Reputation: 1249

Prevent numbers from being pasted in textbox in .net windows forms

I have prevented numbers from being typed in text box using key down event. But when using Ctrl+V or pasting content through mouse, the numbers are being entered in the text box. How to prevent this? I have to allow all text to be pasted/typed except numbers.

Upvotes: 1

Views: 2208

Answers (3)

Fredrik Mörk
Fredrik Mörk

Reputation: 158319

On quite simple approach would be to check the text using the TextChanged event. If the text is valid, store a copy of it in a string variable. If it is not valid, show a message and then restore the text from the variable:

string _latestValidText = string.Empty;
private void TextBox_TextChanged(object sender, EventArgs e)
{
    TextBox target = sender as TextBox;
    if (ContainsNumber(target.Text))
    {
        // display alert and reset text
        MessageBox.Show("The text may not contain any numbers.");
        target.Text = _latestValidText;
    }
    else
    {
        _latestValidText = target.Text;
    }
}
private static bool ContainsNumber(string input)
{
    return Regex.IsMatch(input, @"\d+");
}

This will handle any occurrence of numbers in the text, regardless of where or how many times they may appear.

Upvotes: 3

KBoek
KBoek

Reputation: 5975

You can use the JavaScript change event (onchange) instead of the keydown event. It'll check only when the user leaves the textbox though.

Upvotes: -1

TerrorAustralis
TerrorAustralis

Reputation: 2923

use the TextBox.TextChanged event. Then use the same code as you have in the KeyDown event. In fact, you no longer need the keydown event

Upvotes: 3

Related Questions