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

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

27.04.2014, 16:52. Показов 6968. Ответов 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
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
27.04.2014, 16:55
Цитата Сообщение от Andrew Tobilko Посмотреть сообщение
C++
1
if ((e->KeyChar >= '0') && (e->KeyChar >= '0'))
Вот тут может так надо:
C++
1
 if ((e->KeyChar >= '0') && (e->KeyChar <= '9'))
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
27.04.2014, 18:08  [ТС]
аналогично, вводиться все!
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
27.04.2014, 18:20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
             }
else {
e-> KeyChar='\0';
}
 
             e->Handled = true;
}
Может так?
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
27.04.2014, 18:32  [ТС]
все то же самое
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
27.04.2014, 19:37
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private: System::Void textBox1_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    
                 if ((e->KeyChar >= '0') && (e->KeyChar <= '9'))
                 {
                     return;
                 }
                 if (e->KeyChar == '.')
                 {
                     e->KeyChar = ',';
                 }
                 if (e->KeyChar == ',')
                 {
                     if (textBox1->Text->IndexOf(',') != -1)
                         e->Handled = true;
                     return;
                 }
                if (e->KeyChar == (char)Keys::Back) return;
                  e->Handled = true;
                
             }
Вот так у меня не вводится ничего, кроме возврата каретки, цифр и запятой
1
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
27.04.2014, 19:53  [ТС]
C++
1
this->textMain->TextChanged += gcnew System::EventHandler(this, &Calculator::textMain_TextChanged);
а что подключать в описании? я просто еще не совсем разобрался
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
27.04.2014, 20:02
У меня так работает, в мастере создал приложение, написал обработчик события keypress. У меня VisualStudio 2010
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
27.04.2014, 20:17  [ТС]
а что у тебя написано в описании textBox?
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
27.04.2014, 20:26
C++
1
this->textMain->TextChanged += gcnew System::EventHandler(this, &Calculator::textMain_TextChanged);
Это по моему описание обработчика события изменения текста и к проблеме отношения не имеет.
А тебе надо поменять TextBox на TextMain вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private: System::Void textMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    
                 if ((e->KeyChar >= '0') && (e->KeyChar <= '9'))
                 {
                     return;
                 }
                 if (e->KeyChar == '.')
                 {
                     e->KeyChar = ',';
                 }
                 if (e->KeyChar == ',')
                 {
                     if (textMain->Text->IndexOf(',') != -1)
                         e->Handled = true;
                     return;
                 }
                if (e->KeyChar == (char)Keys::Back) return;
                  e->Handled = true;
                
             }
Ведь у тебя объект TextBox, который у меня называется TextBox1, называется textMain
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
27.04.2014, 20:32  [ТС]
C++
1
this->textMain->KeyPress += gcnew System::EventHandler(this, &Calculator::textMain_KeyPress);
так тоже не работает...
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
27.04.2014, 20:45
Я думаю, что надо вернуть всё на первоначальное, когда вводилось всё и в обработчик события KeyPress вставить
это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 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;
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
27.04.2014, 21:35  [ТС]
киньте пожалуйста мне свои файлы, полностью
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
27.04.2014, 21:48
Лучший ответ Сообщение было отмечено Andrew Tobilko как решение

Решение

во вложении
Вложения
Тип файла: rar dsvserdg.rar (668.2 Кб, 59 просмотров)
1
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
28.04.2014, 16:09  [ТС]
огромное спасибо, как и ожидалось все проблема была в описании
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
28.04.2014, 16:28
А где именно?
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
28.04.2014, 17:22  [ТС]
вот так правильно

C++
1
this->textMain->KeyPress += gcnew System::Windows::Forms::KeyPressEventHandler(this, &Calculator::textMain_KeyPress);
есть еще несколько вопросов по калькулятору, если не сложно помоги...
как сделать проверку на кому ( в С# разобрался, тут не пойму). Если есть кома - ничего не добавляем, если нет - пишем.

C++
1
2
3
4
5
6
private: System::Void pictureVirgule_Click_1(System::Object^  sender, System::EventArgs^  e) {
                if (textMain->Text == "0")
                    textMain->Text = "0,";
                else
                    textMain->Text += ",";
    }
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
28.04.2014, 18:09
Что-то я не понял, что нужно сделать? Что такое кома?)
0
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 21
28.04.2014, 19:14  [ТС]
кома (укр) - запятая
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
28.04.2014, 22:00
А знаки и скобки тоже в TextBox добавляются?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2014, 22:00
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru