#c# #.net #winforms #textbox #validation
#c# #.net #winforms #текстовое поле #проверка
Вопрос:
Какой код я должен написать, чтобы исключить любые специальные символы, кроме ‘_’ (подчеркивание), при вводе имени в текстовое поле?
Если такой символ существует, то должно появиться всплывающее сообщение.
Комментарии:
1. Предоставьте код, который вы написали: мы не собираемся делать все за вас…
2. Мне было интересно, почему последовала такая жесткая реакция на разумный вопрос, а затем я увидел, что изначально все начиналось, буквально, с «пожалуйста, отправьте код»…
Ответ №1:
Вместо того, чтобы я писал код за вас, вот основные шаги, необходимые для выполнения такого подвига:
-
Обработайте
KeyDown
событие для вашегоTextBox
элемента управления. -
Используйте что-то вроде
Char.IsSymbol
метода, чтобы проверить, разрешен ли введенный им символ. Убедитесь, что вы явно проверяете наличие подчеркивания, потому что вы хотите разрешить его как особый случай других символов. -
Если введен допустимый символ, ничего не делайте. WinForms позаботится о вставке их в текстовое поле.
Однако, если введен недопустимый символ, вам нужно показать пользователю сообщение, информирующее его о том, что символ не принят текстовым полем. Здесь нужно сделать пару вещей:
-
Установите для
e.SuppressKeyPress
свойства значение True. Это предотвратит появление символа в текстовом поле. -
Отобразить окно всплывающей подсказки в текстовом поле, указывающее, что введенный пользователем символ не принимается текстовым полем, и информирующее их, какие символы считаются допустимыми для ввода.
Самый простой способ сделать это — использоватьToolTip
класс. Добавьте этот элемент управления в свою форму во время разработки и отобразите его при необходимости, используя одну из перегрузокShow
метода.
В частности, вы захотите использовать одну из перегрузок, которая позволяет вам указать, с чемIWin32Window
связать всплывающую подсказку (это ваш элемент управления текстовым полем).В качестве альтернативы, вместо всплывающей подсказки вы можете отобразить маленький значок ошибки рядом с элементом управления текстовым полем, информируя пользователя о том, что его последний ввод был неверным. Это легко реализовать с помощью
ErrorProvider
элемента управления. Добавьте их в свою форму во время разработки, точно так же, как элемент управления всплывающей подсказкой, и вызовитеSetError
метод во время выполнения, чтобы отобразить сообщение об ошибке.Что бы вы ни делали, не выводите окно сообщения! Это мешает пользователю вводить текст, и вполне вероятно, что он непреднамеренно откажется от этого, введя следующую букву, которую он хотел ввести.
-
Комментарии:
1. Очень хороший ответ. Мне нравится тот факт, что в нем объясняется весь хороший дизайн, который вам нужно внедрить, чтобы сделать его удобным для пользователя, особенно рекомендации по окнам сообщений.
Ответ №2:
Добавьте обработчик к событию TextBox
‘s KeyDown
. Вы можете проверить, какая клавиша была нажата там, и делать с ней все, что захотите, включая всплывающее окно сообщения.
Комментарии:
1. он написал, вводя имя … вы думаете, он хотел сказать текст ? Я не ответил, потому что я действительно не понял, о чем он спрашивал .. и особая благодарность @Raj More за редактирование этого поста, потому что до этого он был нечитаемым
2. @Marco: Я не уверен, что понимаю. Он написал, введя имя в текстовое поле. Возможно, текстовое поле содержит имя пользователя. Я не уверен, но это не кажется важным для вопроса. Я что-то упускаю?