Как проверить символы, которые пользователь вводит в текстовое поле WinForms?
Какой код я должен написать, чтобы запретить какие-либо специальные символы, кроме "_" (подчеркивание) при вводе имени в текстовом поле?
Если такой символ существует, то должно появиться всплывающее сообщение.
2 ответа
Вместо того, чтобы писать код для вас, вот основные шаги, необходимые для выполнения такого подвига:
Обрабатывать
KeyDown
событие для вашегоTextBox
контроль.Используйте что-то вроде
Char.IsSymbol
метод, чтобы проверить, разрешен ли введенный ими символ. Убедитесь, что вы явно указали на подчеркивание, потому что вы хотите разрешить его как особый случай других символов.Если введен правильный символ, ничего не делайте. WinForms позаботится о том, чтобы вставить его в текстовое поле.
Однако, если введен недопустимый символ, вам необходимо показать пользователю сообщение, информирующее его о том, что этот символ не принят текстовым полем. Несколько вещей, чтобы сделать здесь:
Установить
e.SuppressKeyPress
Свойство True. Это предотвратит появление символа в текстовом поле.Отобразите окно всплывающей подсказки в текстовом поле, указывая, что введенный пользователем символ не принимается текстовым полем, и сообщая им, какие символы считаются допустимыми для ввода.
Самый простой способ сделать это с помощьюToolTip
класс Добавьте этот элемент управления в форму во время разработки и при необходимости отобразите его, используя одну из перегрузокShow
метод.
В частности, вы захотите использовать одну из перегрузок, которая позволяет вам указатьIWin32Window
связать всплывающую подсказку (это ваш текстовый элемент управления).Кроме того, вместо всплывающей подсказки можно отобразить небольшой значок ошибки рядом с элементом управления текстовым полем, информируя пользователя о том, что его последний ввод был неверным. Это легко реализовать с помощью
ErrorProvider
контроль Добавьте его в форму во время разработки, как элемент управления всплывающей подсказки, и вызовитеSetError
метод во время выполнения для отображения сообщения об ошибке.Что бы вы ни делали, не отображайте окно сообщения! Это нарушает попытки пользователя набрать текст, и вполне вероятно, что он по неосторожности отклонит его, введя следующую букву, которую хотел набрать.
Добавить обработчик в TextBox
"s KeyDown
событие. Вы можете проверить, какая клавиша была нажата там, и делать с ней все, что захотите, включая отображение окна сообщения.