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

admin

Администратор
Сообщения
607
Оценка реакций
65
Как вводить в TextBox только цифры или другие необходимые им символы, игнорируя все остальные?
  1. Создаем TextBox
  2. Теперь нам нужно событие KeyPress, которое отслеживает нажатие определенных клавиш
  3. Выделяем TextBox
  4. В правой стороне рабочей области Visual Studio окно Свойства и переходим во вкладку событий (значок в виде молнии):
  5. Далее мы ищем событие KeyPress и дважды нажимаем на него левой кнопкой мыши. Нас перенесет к коду этого события. Куда мы добавляем:
    C#:
     char number = e.KeyChar;
    
     if (!Char.IsDigit(number))
     {
        e.Handled = true;
     }

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

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

admin

Администратор
Сообщения
607
Оценка реакций
65
Использование с кодировкой ASCII
ASCII – это специальная кодировка, которая присваивает всем используемым в компьютере символам соответствующий числовой код.
320
C#:
char number = e.KeyChar;
if (e.KeyChar <= 47 || e.KeyChar >= 58)
{
    e.Handled = true;
}
Интерпретировать его можно так: “если ASCII-код записанного в переменную numberсимвола будет меньше или равен 47 (все символы в кодировке до цифры “0”) или больше или равен 58 (все символы в кодировке после цифры “9”), то не обрабатывать такие символы. При этом оставшиеся символы (как раз все наши цифры) не будут подходить под этот фильтр и поэтому выведутся в TextBox’e.
Использование в TextBox цифр и клавиши Backspace
C#:
char number = e.KeyChar;
if (!Char.IsDigit(number) && number != 8) // цифры и клавиша BackSpace
{
    e.Handled = true;
}
Использование в TextBox цифр, запятой и клавиши Backspace
C#:
char number = e.KeyChar;
if ((e.KeyChar <= 47 || e.KeyChar >= 58) && number != 8 && number != 44) //цифры, клавиша BackSpace и запятая а ASCII
{
     e.Handled = true;
}
или
C#:
char number = e.KeyChar;
if (!Char.IsDigit(number) && number != 8 && number != 44) // цифры, клавиша BackSpace и запятая
{
    e.Handled = true;
}
Использование в TextBox цифр, запятой, основных математических знаков и клавиши Backspace
C#:
char number = e.KeyChar;
if ((e.KeyChar <= 47 || e.KeyChar >= 58) && number != 8 && (e.KeyChar <= 39 || e.KeyChar >= 46) && number != 47 && number != 61) //калькулятор
{
    e.Handled = true;
}
 
Верх