Как проверить символы, которые пользователь вводит в текстовое поле WinForms?

Какой код я должен написать, чтобы запретить какие-либо специальные символы, кроме "_" (подчеркивание) при вводе имени в текстовом поле?

Если такой символ существует, то должно появиться всплывающее сообщение.

2 ответа

Решение

Вместо того, чтобы писать код для вас, вот основные шаги, необходимые для выполнения такого подвига:

  1. Обрабатывать KeyDown событие для вашего TextBox контроль.

  2. Используйте что-то вроде Char.IsSymbol метод, чтобы проверить, разрешен ли введенный ими символ. Убедитесь, что вы явно указали на подчеркивание, потому что вы хотите разрешить его как особый случай других символов.

  3. Если введен правильный символ, ничего не делайте. WinForms позаботится о том, чтобы вставить его в текстовое поле.

    Однако, если введен недопустимый символ, вам необходимо показать пользователю сообщение, информирующее его о том, что этот символ не принят текстовым полем. Несколько вещей, чтобы сделать здесь:

    1. Установить e.SuppressKeyPress Свойство True. Это предотвратит появление символа в текстовом поле.

    2. Отобразите окно всплывающей подсказки в текстовом поле, указывая, что введенный пользователем символ не принимается текстовым полем, и сообщая им, какие символы считаются допустимыми для ввода.
      Самый простой способ сделать это с помощью ToolTip класс Добавьте этот элемент управления в форму во время разработки и при необходимости отобразите его, используя одну из перегрузок Show метод.
      В частности, вы захотите использовать одну из перегрузок, которая позволяет вам указать IWin32Window связать всплывающую подсказку (это ваш текстовый элемент управления).

      Пример всплывающей подсказки в виде всплывающей подсказки, отображающей сообщение об ошибке

      Кроме того, вместо всплывающей подсказки можно отобразить небольшой значок ошибки рядом с элементом управления текстовым полем, информируя пользователя о том, что его последний ввод был неверным. Это легко реализовать с помощью ErrorProvider контроль Добавьте его в форму во время разработки, как элемент управления всплывающей подсказки, и вызовите SetError метод во время выполнения для отображения сообщения об ошибке.

      Пример элемента управления ErrorProvider, установленного в текстовом поле

      Что бы вы ни делали, не отображайте окно сообщения! Это нарушает попытки пользователя набрать текст, и вполне вероятно, что он по неосторожности отклонит его, введя следующую букву, которую хотел набрать.

Добавить обработчик в TextBox"s KeyDown событие. Вы можете проверить, какая клавиша была нажата там, и делать с ней все, что захотите, включая отображение окна сообщения.

Другие вопросы по тегам