简体   繁体   中英

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.

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

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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM