Проверка наличия только числовых данных в текстовом поле в форме окна - PullRequest
1 голос
/ 17 ноября 2010

Я хочу, чтобы пользователь вводил только числовые данные в текстовое поле в форме окна. Как мне этого добиться?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2010

Самый простой способ - использовать MaskedTextBox (использовать свойство Mask) или NumericUpDown . Если вам действительно нужен детализированный элемент управления, которого нет в этих элементах управления, обработайте KeyPress и другие соответствующие события элемента управления TextBox, как требуется.

РЕДАКТИРОВАТЬ: Уточнил, что KeyPress не единственное соответствующее событие, как упомянуто ho1.

1 голос
/ 26 ноября 2010

Что вы хотите сделать, когда пользователь пытается ввести нечисловое значение? Имеет ли это значение до попытки отправки данных? Не вводя свой блок кода каждый раз, когда нажимается клавиша, я думаю, что было бы лучше просто позволить пользователю вводить нечисловые значения и проверять либо при отправке формы и / или когда текстовое поле теряет фокус. Затем, если проверка не пройдена, уведомите пользователя о строгом числовом формате. Это будет менее инвазивным для пользователя, чем прерывание.

Что касается проверки, просто используйте регулярные выражения или попробуйте проанализировать текст текстового поля как целое число.

Регулярное выражение

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

Integer Parse

int validNumbers = 0;
bool isValid = int.TryParse(myTextBox.Text, out validNumbers);
1 голос
/ 17 ноября 2010

Во-первых, это зависит от того, какие числовые данные вы хотите разрешить. (Integer, Double, ... или что-то специфичное для приложения? Например, ISBN или что-то в этом роде?)

Short:

Самый простой способ был бы, как сказала Ани, но если вам нужен более конкретный способ, вам следует прописать соответствующее Событие. Например, TextBox.Validating, TextBox.OnLeave, TextBox.OnTextChange ... зависит от , когда вы хотите проверить соответствие.

Чем вы можете протестировать в Eventhandler все, что захотите, даже RegEx будет возможно для сложных буквенно-цифровых данных.

PS: Вы действительно должны взглянуть на http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...