ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Ввод в TextBox только цифр и необходимых символов C#


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

Для этого мы создадим тестовый проект для наглядного примера с одним лишь текстбоксом, у нас он вот такой:

Ввод в TextBox только цифр и необходимых символов C#

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

Ввод в TextBox только цифр и необходимых символов C#

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

Ввод в TextBox только цифр и необходимых символов C#

Примечание: если вы не нашли «Свойства», то просто кликните правой кнопкой мыши по текстбоксу и выберете в появившемся меню соответствующую вкладку.

Далее мы ищем событие KeyPress и дважды нажимаем на него левой кнопкой мыши. Нас перенесет к коду этого события. Далее мы рассмотрим несколько вариантов решения проблемы с вводом определенных символов в TextBox. Сначала будут идти варианты только с выводом цифр, а затем и другие (с Backspace, пробелом, запятой и проч.)

 

Использование в TextBox только цифр.

Способ первый — самый быстрый.

Внутри этой области кода мы запишем всего несколько строк:

Вот и всё решение нашей проблемы! Теперь если запустить проект и попробовать что-нибудь написать в нашем TextBox’e, то в него не попадёт ни один другой символ кроме цифр.

Так что же мы тут сделали?

В самой первой строке мы объявили символьную переменную, назвав её number.Благодаря параметру e.KeyChar программа заносит в нашу переменную символ введенной клавиши. Нажали на клавишу «+», в переменную запишется «+», нажали на клавишу «в», в переменную запишется «в» и т.д.

Далее идёт условие !Char.IsDigit(number), которое можно словесно интерпретировать как «если символ из переменной number не относится к категории десятичных цифр» (а нам как раз такие и нужны). А вывод из условия e.Handled = true интерпретируется как «тогда не обрабатывать введенный символ (и, следовательно, не выводить его в TextBox). Иными словами, мы проверяем, является ли любой символ, введенный пользователем десятичной цифрой. Если нет — отбрасываем его, если является — обрабатываем и выводим в TextBox. Легко, просто, быстро!


Способ второй — с кодировкой ASCII.

Однако далеко не всегда можно обойтись только способом, описанным выше. Нам в TextBox’e могут понадобиться и другие символы и клавиши, например, клавиша удаления Backspace, запятая или пробел. В таком случае нам придётся пользоваться помощью таблицей ASCII-кодов. Это совсем несложно. Но для начала разберемся,что вообще такое ASCII.

ASCII — это специальная кодировка, которая присваивает всем используемым в компьютере символам соответствующий числовой код.

Таблицу большинства ASCII-кодов можно просмотреть ниже (кликабельно).

Ввод в TextBox только цифр и необходимых символов C#

Теперь попробуем написать аналогичный код для вывода только цифр используя коды ASCII. Итак, ищем в таблице, под какими номерами расположены наши цифры. Видимо, что нам необходимы коды с 48 по 57 — цифры от 0 до 9. Значит наш код в событии KeyPress будет таким:

Интерпретировать его можно так: «если ASCII-код записанного в переменную number символа будет меньше или равен 47 (все символы в кодировке до цифры «0») или больше или равен 58 (все символы в кодировке после цифры «9»), то не обрабатывать такие символы. При этом оставшиеся символы (как раз все наши цифры)  не будут подходить под этот фильтр и поэтому выведутся в TextBox’e.

Ниже приведены коды с различными фильтрациями клавиш и символов, не ограничивающихся только лишь одними цифрами.

 

Использование в TextBox цифр и клавиши Backspace.

Код, приведенный ниже, дает возможность использовать в TextBox’e не только цифры, но и клавишу удаления Backspace. В нашем варианте мы смешали оба описанных выше способа, но также можно использовать и только второй способ.

 

 Использование в TextBox цифр, запятой и клавиши Backspace.

Если нам потребуется вводить десятичные дроби, то для этой цели понадобится ещё и запятая. Приведем пример кода, на этот раз основанного на ASCII кодировке:

Альтернативный вариант:

 

Использование в TextBox цифр, запятой, основных математических знаков и клавиши Backspace.

Если есть необходимость в создании, например, калькулятора, то может потребоваться отфильтровать не только цифры, но и некоторые другие математически знаки. Пример кода со знаками умножения, деления, сложения и вычитания, а также со скобками можно увидеть ниже:

Сравнив использованные числовые коды с таблицей ASCII можно легко понять, какой символ соответствует каждому коду.

Ввод в TextBox только цифр и необходимых символов C#

Вот и всё! Мы рассмотрели самые простые способы ввода в TextBox одних цифр или других необходимых символов на языке C#.

Можно скачать исходный код программы, приведенной в статье со всеми перечисленными вариантами использования.

Скачать исходник

 

В скором времени мы разберем, как можно создавать вывод в TextBox только букв английского и русского алфавитов, а также знаков препинания. Удачного программирования!

4.7/5 - (51 голос)



Поделиться в соц. сетях:

2 комментария(ев) к статье “Ввод в TextBox только цифр и необходимых символов C#

Добавить комментарий

Ваш адрес email не будет опубликован.