Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/35: Рейтинг темы: голосов - 35, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21

Калькулятор. Ввод символов в textbox

27.04.2014, 16:52. Показов 7112. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Нужна помощь, почему-то не работает. Пишу калькулятор. Есть TextBox - "TextMain". Нужно сделать запрет на ввод всех символов кроме цифр, запятой и операций. Запускаю - вводятся все символы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private: System::Void textMain_KeyPress(Object^ sender, KeyPressEventArgs^ e) {
             if ((e->KeyChar >= '0') && (e->KeyChar >= '0'))
             {
                 return;
             }
             if (e->KeyChar == '.')
             {
                 e->KeyChar = ',';
             }
             if (e->KeyChar == ',')
             {
                 if (textMain->Text->IndexOf(',') != -1)
                     e->Handled = true;
                 return;
             }
 
             e->Handled = true;
}
В чем проблема? Может я что-то в начале забыл дописать? Прошу помочь. Заранее спасибо.

Добавлено через 26 минут
Windows Forms, Visual Studio 2013
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2014, 16:52
Ответы с готовыми решениями:

Ограничение на ввод символов в TextBox
Нужно ограничить ввод текста в TextBox так чтобы можно было вводить только числа (от 0 до 9), буквы русского алфавита и символ...

Ввод определенных символов в textbox
Добрый вечер,имеется textbox.И 3 массива символов. Как сделать чтобы при одной работе(флаг какой-нибудь),вводились только символы из 1-го...

Ограничить ввод символов в TextBox
Я хочу сделать ограничение ввода в текстовое поле (т.е только цифры и определенные знаки). В WinForms у компонента есть событие KeyPress,...

23
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
29.04.2014, 21:58  [ТС]
Студворк — интернет-сервис помощи студентам
нет, но должны
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
29.04.2014, 23:10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
private: System::Void textMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    
                 if ((e->KeyChar >= '0') && (e->KeyChar <= '9'))
                 {
                       String ^a=textMain->Text;
                     int i=a->Length-1;
                     if (i>=0 && a[i]==')') e->Handled=true;
                     return;
                 }
                 if (e->KeyChar =='+' || e->KeyChar =='-' ||  e->KeyChar =='/' || e->KeyChar =='*')
                 {
                      String ^a=textMain->Text;
                     int i=a->Length-1;
                     
                     if ((e->KeyChar =='+' || e->KeyChar =='-' ) && i<0)  return ;
                    
                     if (i<0 || !(a[i]>='0' && a[i]<='9'|| a[i]==')') ) e->Handled=true;
                     return;
                 }
                 if (e->KeyChar =='(' )
                 {
                      String ^a=textMain->Text;
                     int i=a->Length-1;
                    
                     if (i>=0 && !(a[i]=='+' || a[i]=='-' || a[i]=='/' || a[i]=='*' || a[i]=='(') ) e->Handled=true;
                     return;
                 }
                  if (e->KeyChar ==')' )
                  {
                        String ^a=textMain->Text;
                     int i=a->Length-1;
                     if (i<0 || !(a[i]>='0' && a[i]<='9' || a[i]==')') ) {e->Handled=true;return;}
                     int skobki=0;
                     for (int j=0;j<i+1;j++)
                         if (a[j]=='(') skobki++;
                         else if (a[j]==')') skobki--;
                         if (skobki<=0) e->Handled=true;
                     return;
                  }
                 if (e->KeyChar == '.')
                 {
                     e->KeyChar = ',';
                 }
                 if (e->KeyChar == ',')
                 {
                     String ^a=textMain->Text;
                     int i=a->Length;
                     
                        
                        do
                        {
                            i--;
                            if (i<0) break;
                            if (a[i]==','){ e->Handled=true;break;}
                            
                        }while ( a[i]>='0' && a[i]<='9');
                    if (i== a->Length-1) e->Handled=true;
                     
                     return;
                 }
                if (e->KeyChar == (char)Keys::Back) return;
                  e->Handled = true;
                
             }
Вот написал со знаками, скобками и запятой, и проверкой на правильность ввода; вроде работает, а может и нет
0
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 13
30.04.2014, 19:46
А как условие прописать, чтобы не вводилось несколько нулей подряд, если первая цифра ноль? Мне нужно для проекта с целыми числами, без запятой. Что-то типа "если первая цифра ноль, удалить этот ноль и написать символ, который вводится с клавиатуры".
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.05.2014, 12:44
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private: System::Void textMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
if ((e->KeyChar >= '0') && (e->KeyChar <= '9'))
{
if (textMain->Lenght)
{
String^a;
a=textMain->text;
if (a[textMain->Lenght-1]=='0']) 
if (e->KeyChar == '0') e->Handled=true;
else 
{
  textMain->Text= textMain->Text->Remove(textMain->Text->Length-1,1);
}
}
}
}
как-то так
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2014, 12:44

Ограничить ввод символов в textbox
Подскажите как сделать, чтобы в текст бокс вводились только шесть цифр от 0 до 9, в таком формате 12:12:45, то есть чтобы символы...

Запретить ввод повторяющихся символов в textbox
Друзья, палундра! В форме текстбокс, в который вводится текст, и кнопка &quot;готово&quot; для перехода к следформе, ну эт не особо...

Ввод только английских символов в textBox
Как можно реализовать систему, чтоб в мой текст бокс, куда пользователь должен будет вводить пароль, нельзя было писать русские буквы?...

Ограничение на ввод в textbox двух символов
Добрый вечер. Делаю калькулятор(новичок), возник вопрос ограничения вводимых символов в Textbox c клавиатуры. Необходимо, чтобы вводились...

Ввод в TextBox только определенных символов
Здравствуйте, как сделать чтоб поле textbox понимало только , а остальные символы - нет? Т.е в поле писать можно только латинскими...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru