Domanda

I am using C#, Visual Studio 2010, Windows Form Application, and working with a textbox.

For this textbox, I don't want the user to be able to press any key aside from numbers, backspace, and letters (lower and upper case). Any other characters (such as @#$%^) will result in a beep and reject the keypress.

What would be the code to check for those range of keys?

Thank you!

È stato utile?

Soluzione

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!(Char.IsLetter(e.KeyChar) || Char.IsDigit(e.KeyChar) || Char.IsControl (e.KeyChar))){
        e.Handled = true;
        Console.Beep(); 
    }
}

But, like MusiGenesis said in this question: Allow only alphanumeric in textbox

Handling the KeyDown or KeyPress events is not enough. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top