1

I want that a user only enters numeric data into the textbox in a windows form. How can I achieve this?

3 Answers 3

2

The easiest way would be to use a MaskedTextBox (use the Mask property) or a NumericUpDown control. If you really need fine-grained control that these controls do not provide, handle the KeyPress and other appropriate events of the TextBox control as required.

EDIT: Clarified that KeyPress is not the only relevant event, as mentioned by ho1.

Sign up to request clarification or add additional context in comments.

1 Comment

I agree that it's easier to use MaskedTextBox or NumericUpDown since if you would go for the KeyPress handling etc, you might have to deal with TextChanged or something similar as well, in case text gets entered into the textbox without the use of the keyboard (copy and paste using the mouse or another app sending text into there etc). And you have to remember all the keys that you have to handle, not just digits (backspace?, comma?, dot?).
1

What do you want to happen when the user attempts to enter a non-numeric value? Does this matter before a data submission attempt? Without entering your code block every time a key is pressed, I think it'd be cleaner to just let the user enter non-numerics and validate either when the form is submitted and/or when the text box loses focus. Then if validation fails, notify the user of the strict numeric format. This would be less invasive to a user, rather than interrupting.

As for validation, just use either regular expressions or try to parse the text box's text as an integer.

Regular Expression

System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"^\d$");

Integer Parse

int validNumbers = 0;
bool isValid = int.TryParse(myTextBox.Text, out validNumbers);

Comments

1

First it depends on what kind of numeric data you want to allow. (Integer, Double, ..., or something app-specific? Like an ISBN or something?)

Short:

The easiest way would be like Ani said, but if you need a more specific way, you should subcribe an matching Event. For Example TextBox.Validating, TextBox.OnLeave, TextBox.OnTextChange... depends on when you want to test the matching.

Than you can test in the Eventhandler whatever you want, even RegEx would be possible for complex alphanumeric data.

PS: You should really have a look at http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.