Ввод в 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 только букв английского и русского алфавитов, а также знаков препинания. Удачного программирования!

Ввод в TextBox только цифр и необходимых символов C#
4.33 (86.67%) 3 votes

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">