Как запретить ввод цифр или букв в textBox C#
Всем привет! Сегодня я покажу один из вариантов того, как можно реализовать запрет на ввод информации.
Думаю многие из вас сталкивались с тем что в программах невозможен ввод в поле имени, часть символов состоящих из цифры, Такое встречается только в играх, но в реальности то мы знаем, что такого быть не должно. А само имя или фамилия должно исключительно состоять только из букв.
В примере ниже рассмотрим запрет ввода цифр в текстбокс и запретим пользователю ввод прописных букв. Пример очень простой и занимает всего пару строк кода.
private void txt_PreviewTextInput ( object sender , TextCompositionEventArgs e )
if ( int . TryParse ( e . Text , out int i ) )
e . Handled = true ;
if ( e . Text == e . Text . ToLower ( ) )
e . Handled = true ;
Как видим из кода у нас имеется TextBox с именем txt, у которого имеется событие PreviewTextInput. Внутри этого события, используем условии на проверку, введенный пользователем символ приводим к целочисленному типу, если это число то событие завершается, а символ не печатается в TextBox. Во втором условии, происходит проверка символа, в сравнении с нижним регистром этого же символа, если они равны, это будет означать, что пользователь ввел символ в нижнем регистре.
Следующий пример более сложный но более верный, так как он пропускает ввод запятой при чем одной и она не должна быть первой, и не встречаться в середине числа не сколько раз, да бы мы могли полученное число привести к вещественному типу. Для этого нам необходимо подписаться на события TextBox KeyPress и TextChanged
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Ввод в TextBox только цифр и необходимых символов C#
Здравствуйте, очень часто начинающие программисты задают вопрос, как вводить в TextBox только цифры или другие необходимые им символы, игнорируя все остальные. В этой статье мы рассмотрим несколько самых простых и полезных способ решения этой проблемы.
Для этого мы создадим тестовый проект для наглядного примера с одним лишь текстбоксом, у нас он вот такой:

Перво-наперво нам необходимо найти событие, благодаря которому сможем отследить нажатие определенных клавиш. Таким событием является KeyPress. Оно будет происходить всегда, когда пользователь нажимает на любую кнопку на клавиатуре. Чтобы перейти к нему, надо для начала выделить TextBox, один раз щёлкнув на него левой кнопкой мыши.

Затем следует найти в правой стороне рабочей области Visual Studio окно «Свойства» и перейти в нём на вкладку событий (значок в виде молнии):

Примечание: если вы не нашли «Свойства», то просто кликните правой кнопкой мыши по текстбоксу и выберете в появившемся меню соответствующую вкладку.
Далее мы ищем событие KeyPress и дважды нажимаем на него левой кнопкой мыши. Нас перенесет к коду этого события. Далее мы рассмотрим несколько вариантов решения проблемы с вводом определенных символов в TextBox. Сначала будут идти варианты только с выводом цифр, а затем и другие (с Backspace, пробелом, запятой и проч.)
Использование в TextBox только цифр.
Способ первый — самый быстрый.
Внутри этой области кода мы запишем всего несколько строк:
Как запретить ввод символов символов с клавиатуры в textBox?
НО, хоть сколько я буду рассматривать я не знаю как реализовать ни то, ни это. Прошу помочь.
Отслеживать
задан 17 ноя 2017 в 21:22
557 2 2 золотых знака 4 4 серебряных знака 27 27 бронзовых знаков
Вы вопрос уже закрыли. Но я вам малось намекну. У текстбокса есть события, разные, но вам нужно событие клавиатурное. На это событие нужно подписаться и, в методе обрабатывающем это событие, проверять символы; если цифра пропускать, а если буква, то блокировать. Попробуйте реализовать это самостоятельно.
Запрет ввода данных
Можно использовать контрол MaskedTextBox.
если в нем настроить маску, то вводить можно будет только разрешенные маской символы. Вся логика уже там.
Если же этого не достаточно — то RegEx, класс для работы с regular extension.
Но все равно нужно проверять всю строку после ввода, а не во время (у каждого контрола есть эвент — к нему и можно проивязаться)
Если вам надо именно на вводе, и не MaskedTextBox, то во первых, не советую 🙂 (это же нестандартное поведение, пользователи будут зависать 🙂 ), во вторых — придется переменными уровня класса («глобальными») пользоваться, чтобы количество уже введенных точек считать. Кривой код будет.