2010-08-06 5 views
3

Я пытаюсь проверить, что ввод в текстовое поле на WinForms через C# соответствует реально существующей модели.Проверка ввода для Textbox на C# Winforms

Шаблон должен быть строкой, которая состоит только из следующих символов

  • 0 до 9
  • A до Z
  • "-"
  • "/"

Я рассматриваю использование события «Проверка» в текстовом поле для выполнения проверки, но я борюсь с правильным регулярным выражением для использования - или, может быть, есть лучший способ, чем использование регулярного выражения.

ответ

3

Регулярное выражение "[A-z0-9_ /]" должен это делать. Regex выглядит как самый очевидный выбор здесь (это очень простая проверка), если вы довольны их использованием.

Возможно, вам процитировать некоторые из специальных символов с «\» в зависимости от языка выбора. Если вы также хотите, чтобы буквы в нижнем регистре были разрешены, тогда это будет «[a-zA-Z0-9_ /]».

С другой стороны, что-то вроде "(\ ж \ д _ /??) +" Может работает - \ ш соответствует любому символу, \ d любой цифры. «?» соответствует предыдущему значению char 0 или 1 раз, в то время как + в конце допускает несколько совпадений.

1

Вы можете использовать событие KeyDown в TextBox и установить для поля SuppressKeyPress ключа KeyEventArgs значение true, если оно не является одним из символов, которые вы хотите принять. Вы можете проверить, какой символ был введен, проверив поле KeyCode в KeyEventArgs. Это сделает так, что если пользователь попытается ввести символ, который не является одним из тех, которые вы хотите, ничего не произойдет.

+0

Я делал это так и раньше - относительно прямо вперед. Обязательно обращайтесь с особыми случаями, например. где пользователь вводит числовой код для символа. – cristobalito

+0

Также убедитесь, что вы случайно не убиваете быстрые клавиши, такие как вырезание, копирование и вставка. –

Смежные вопросы