Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/830: Рейтинг темы: голосов - 830, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 26

Как запретить ввод букв в TextBox?

18.05.2012, 19:10. Показов 165197. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как запретить ввод букв в textBox? Вот эта конструкция неверно работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 public void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            try 
            {
            char s = Convert.ToChar(textBox1.Text);
            if ((s <= '0') || (s >= '9'))
                MessageBox.Show("Вы ввели символ! Пожалуйста,введите цифру");
              }
                catch(System.FormatException)
            {
                MessageBox.Show("Вы ввели символ! Пожалуйста,введите цифрy");
                }
        }
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2012, 19:10
Ответы с готовыми решениями:

Как запретить ввод букв и символов в TextBox?
Как запретить ввод букв и символов в TextBox ? :scratch:

Запретить ввод букв в TextBox
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar &gt;= '0') &amp;&amp; (e.KeyChar &lt;= '9')) ...

Как запретить ввод данных в textBox ?
Собственно в заголовке и заключается весь вопрос. Я так понимаю это как то делается с помощью события KeyPress, но вот как именно, вопрос....

60
 Аватар для emdroof
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 88
18.05.2012, 19:34
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void textBox1_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int s = Convert.ToInt32(textBox1.Text);
            }
            catch (System.FormatException)
            {
                MessageBox.Show("Вы ввели символ! Пожалуйста,введите цифрy");              
            }    
            textBox1.Clear();
    
        }
количество введенных символов будет зависеть от типа textbox
4
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 26
18.05.2012, 19:45  [ТС]
теперь он не только на буквы ругается, но и когда числа ввожу
0
 Аватар для emdroof
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 88
18.05.2012, 19:51
ругаться не должен, у меня не ругается, а сколько чисел вводишь?потому что int имеет свои пределы
0
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 26
18.05.2012, 19:54  [ТС]
все, я уже исправила, спасибо)
0
Заблокирован
18.05.2012, 20:18
А как ты исправила? а то у меня такая же фигня щас, не дает ввести цифры(
0
1 / 1 / 0
Регистрация: 22.11.2010
Сообщений: 26
18.05.2012, 20:27  [ТС]
просто уберите
C#
1
textBox1.Clear();
0
413 / 100 / 3
Регистрация: 07.09.2011
Сообщений: 532
Записей в блоге: 2
18.05.2012, 20:29
Лучший ответ Сообщение было отмечено как решение

Решение

Ну что за изврат? Вот как гораздо проще поступить без всяких там исключений:
C#
1
2
3
4
5
6
7
void TextBox1KeyPress(object sender, KeyPressEventArgs e)
        {
            
            if (Char.IsDigit (e.KeyChar)) return;
            else
            e.Handled=true;
        }
9
5 / 5 / 1
Регистрация: 14.03.2011
Сообщений: 55
28.08.2012, 15:33
а как сделать , чтобы "." точку можно было вводить ??
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
28.08.2012, 15:58
C#
1
2
3
4
5
6
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
          if(Char.IsNumber(e.KeyChar) | (Char.IsPunctuation(e.KeyChar)))return;
          else
          e.Handled=true;
        }
Ну это не самый хороший способ!!!
2
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
21.06.2013, 20:17
А можно ли сделать так, что бы во всей форме (допустим, там десять полей) нельзя было вводить буквы? Т.е. что бы не создавать десять раз событие для каждого текстбокса, что бы в каждый одно и тоже прописать, а один раз где-то указать, что в этой форме, или в TabControl, или TableLayoutPanel допустимы только числовые значения. Можно?
0
 Аватар для Darty
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 18
24.07.2013, 23:51
Пишешь обработчик для textBox1.KeyPressed, а потом в свойствах остальных текстбоксов выбираешь его.
0
 Аватар для JustBear
7 / 7 / 0
Регистрация: 01.03.2013
Сообщений: 166
25.07.2013, 11:27
Как вариант - вызывать код ниже, например, вот так textBox1_KeyPress(); и Все.

C#
1
2
3
4
5
6
7
8
9
  private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char ch = e.KeyChar; 
 
            if (!Char.IsDigit(ch) && ch != 8) //Если символ, введенный с клавы - не цифра (IsDigit),
            {
                e.Handled = true;// то событие не обрабатывается. ch!=8 (8 - это Backspace)
            }
        }
3
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
25.07.2013, 12:04
Darty,
Тоже не то, тоже требует многократного повторения. Хотя и проще.
0
5 / 5 / 0
Регистрация: 06.06.2014
Сообщений: 94
07.10.2014, 22:48
C#
1
2
3
4
5
private void IsDigit_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8)
                e.Handled = true;
        }
Вот самый короткий и простой способ, лучше не найдешь)
2
 Аватар для mvs87
15 / 15 / 7
Регистрация: 21.08.2013
Сообщений: 115
30.03.2015, 11:49
Цифры + запятая + работающий BackSpace

C#
1
2
3
4
5
6
        private void TB_rez_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsNumber(e.KeyChar) | (e.KeyChar == Convert.ToChar(",")) | e.KeyChar == '\b') return;
            else
                e.Handled = true;
        }
9
1 / 1 / 2
Регистрация: 22.12.2014
Сообщений: 159
21.05.2015, 18:50
Присоединюсь с вопросом, а как запретить ввод русских символов(букв) ?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.05.2015, 19:13
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Цитата Сообщение от eastsida Посмотреть сообщение
а как запретить ввод русских символов(букв) ?
Обработка события KeyPress:
C#
1
2
char c = e.KeyChar;
e.Handled = c >= 'а' && c <= 'я' || c >= 'А' && c <= 'Я' || c == 'ё' || c == 'Ё';
2
16 / 16 / 6
Регистрация: 01.03.2014
Сообщений: 122
23.08.2015, 01:35
Доброго времени суток! К вопросу "Как для всех текстбоксов формы запретить ввод букв или цифр?" Проще всего сделать несколько классов потомков класса TextBox со своими ограничениями и потом использовать их во всех формах проекта.

Для текстбокса в котором только цифры: новый класс ClsDigitTextBox, в нем обработчик.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public class ClsNumericTextBox : TextBox
    {
        private string lastText;
        private double value;
 
 
        public ClsNumericTextBox()
            : base()
        {
            lastText = "0";
            this.Text = "0";
            this.TextAlign = HorizontalAlignment.Right;
            this.TextChanged += new EventHandler(ClsNumericTextBox_TextChanged);
        }
 
        
        void ClsNumericTextBox_TextChanged(object sender, EventArgs e)
        {
            if (!double.TryParse(this.Text, out value)) this.Text = lastText;
            else lastText = this.Text;
        }
     }
Таким образом программируем на основе паттерна: все что связано с объектом программмируется в самом объекте. В форме остается код взаимодействия между объектами.
0
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
26.08.2015, 18:38
А можно при помощи регулярных выражений определить любой вариант.
Например, ввод только цифр:

C#
1
2
3
4
5
6
7
using System.Text.RegularExpressions;
 
        Regex rx = new Regex(@"\D", RegexOptions.IgnoreCase);
        private void TextBox1_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextBox1.Text = rx.Replace(TextBox1.Text, "");
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2015, 18:38
Помогаю со студенческими работами здесь

Как запретить ввод символа в textbox?
Здравствуйте. Подскажите, пожалуйста, как в событии KeyPress прописать, чтобы ввод символа &quot;;&quot; был невозможен Спасибо

Как запретить ввод некоторых символов в TextBox?
По заданию в TextBox можно вводить числа только в двоичной системе счисления, т.е. только &quot;1&quot; и &quot;0&quot;. Помогите,...

Как запретить ввод нуля первым символом в TextBox?
Доброго времени суток, как запретить ввод нуля первым символом в TextBox?

Массив текстбоксов. Как запретить ввод букв?
Здравствуйте. Подскажите, пожалуйста. Есть массив из текстбоксов 5x5. Нужно заблокировать ввод любых значений кроме 1-9 и клавиши...

Как запретить ввод определенных символов в несколько TextBox, не программируя каждый по отдельности
Добрый день.. Подскажите пожалуйста, как можно создать, свойство, которые бы прописывал в текстбоксы, а оно давало возможность ввода только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru