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