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

#c# #.net #winforms #textbox #validation

#c# #.net #winforms #текстовое поле #проверка

Вопрос:

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

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

Комментарии:

1. Предоставьте код, который вы написали: мы не собираемся делать все за вас…

2. Мне было интересно, почему последовала такая жесткая реакция на разумный вопрос, а затем я увидел, что изначально все начиналось, буквально, с «пожалуйста, отправьте код»…

Ответ №1:

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

  1. Обработайте KeyDown событие для вашего TextBox элемента управления.

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

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

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

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

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

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

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

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

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

Комментарии:

1. Очень хороший ответ. Мне нравится тот факт, что в нем объясняется весь хороший дизайн, который вам нужно внедрить, чтобы сделать его удобным для пользователя, особенно рекомендации по окнам сообщений.

Ответ №2:

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

Комментарии:

1. он написал, вводя имя … вы думаете, он хотел сказать текст ? Я не ответил, потому что я действительно не понял, о чем он спрашивал .. и особая благодарность @Raj More за редактирование этого поста, потому что до этого он был нечитаемым

2. @Marco: Я не уверен, что понимаю. Он написал, введя имя в текстовое поле. Возможно, текстовое поле содержит имя пользователя. Я не уверен, но это не кажется важным для вопроса. Я что-то упускаю?