Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 162
1

Калькулятор. Как осуществить при повторном нажатии на "+" или другой знак, выполнение действия

03.04.2015, 11:07. Показов 1476. Ответов 6
Метки нет (Все метки)

Есть хоть идея у кого-нибудь???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2015, 11:07
Ответы с готовыми решениями:

Калькулятор - при повторном нажатии на кнопку "равно" повторить последнюю операцию
В общем, есть готовый калькулятор, но нужно в него добавить, чтобы при повторном нажатии на кнопку...

Калькулятор - выполнение последней операции при неоднократном нажатии "="
В чем собственно вопрос: пишу калькулятор, вкратце алгоритм: ввели число в текстбокс при нажатии...

При нажатии Delete показать сообщение "On", при повторном нажатии - "Off"
нужно что бы при нажатии ДЕЛЕТЕ показал сообщения ОН при повторном нажатии показал ОФФ этот код...

При повторном нажатии на кнопку "Отправить" в приложении "клиент" выскакивает ошибка, что хост принудительно разорвал соединение
Всем привет. Ребят выручайте. Уже 4-й день бьюсь с программой. В общем, тренируюсь создавать...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
6
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 8
03.04.2015, 12:18 2
C#
1
2
3
4
5
6
7
8
9
if (textBox1.Text.Contains("Допустимый аргумент функции"))
                {
                    MessageBox.Show("Введите фалс");
                }
                else
                {
                    s = (Math.PI / 180.0) * Convert.ToDouble(textBox2.Text);
                }
                count--;
0
185 / 175 / 114
Регистрация: 28.07.2013
Сообщений: 594
03.04.2015, 12:34 3
Цитата Сообщение от dedlovscky Посмотреть сообщение
Как осуществить при повторном нажатии на "+" или другой знак, выполнение действия
C#
1
2
3
4
5
6
7
8
9
10
11
int press=0;
 
//и в обработчике пишем
if (e.KeyCode==Keys.Add){ //нажатие на "+"
    
    if(press==1){ //<-- при первом нажатии будет игнорироваться, т.к. press=0
        //выполнение действия
    }
    press=1;
    e.Handled=true;
}
1
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 162
03.04.2015, 16:50  [ТС] 4
Цитата Сообщение от Snooper Посмотреть сообщение
if (textBox1.Text.Contains("Допустимый аргумент функции"))
{
MessageBox.Show("Введите фалс");
}
else
{
s = (Math.PI / 180.0) * Convert.ToDouble(textBox2.Text);
}
count--;
Поподробнее

Добавлено через 4 часа 8 минут
C#
1
2
3
4
5
6
7
8
9
10
11
int press=0;
 
//и в обработчике пишем
if (e.KeyCode==Keys.Add){ //нажатие на "+"
    
    if(press==1){ //<-- при первом нажатии будет игнорироваться, т.к. press=0
        //выполнение действия
    }
    press=1;
    e.Handled=true;
}
С кодом кнопки понятно
А если это button на форме???
0
185 / 175 / 114
Регистрация: 28.07.2013
Сообщений: 594
03.04.2015, 18:00 5
Лучший ответ Сообщение было отмечено dedlovscky как решение

Решение

Цитата Сообщение от dedlovscky Посмотреть сообщение
А если это button на форме???
ещё проще:
C#
1
2
3
4
5
6
7
8
9
int press=0;
//и в обработчике кнопки пишем
void Button1Click(object sender, EventArgs e)
{
    if(press==1){ //<-- при первом нажатии будет игнорироваться, т.к. press=0
            //выполнение действия
    }
    press=1;
}
1
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 162
03.04.2015, 19:06  [ТС] 6
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
        double ch1, ch2, ch3,ch4, ch5, sz;// sz значение равное значению после равенства(старое значение)
        char znak = '+';
        string s, s1;
        int press = 0;
        Boolean ch6 = true;
        Boolean ch7 = true;// Чтобы запретить ввод цифр в ответ
        Boolean ch8 = false;// Запретить ввод "," в ответе
        Boolean ch9 = true;// Запрет удаления числа в ответе
 
        private void button_cifry_Click(object sender, EventArgs e)
        {
            if (ch7 == true)
            {
                textBox1.Text += (sender as Button).Text;
                label1.Text += (sender as Button).Text;
            }
            ch8 = true;
        }
 
        private void button_znak_Click(object sender, EventArgs e)
        {
            s = label1.Text;
            s1 =",";
            if (s.EndsWith(s1)) label1.Text = label1.Text.Remove(s.Length-1,1); /*Если в конце ch1 будет стоять "," - она будет удалена по наж. на знак действия*/
 
            ch7 = true;// Теперь,при нажатии знака действия,ввод цифр стал возможным
            ch8 = false;
            ch9=true;
 
                try
                {            
                    if (ch1 == 0)
                    {
                        ch1 = Convert.ToDouble(textBox1.Text);
                        znak = (sender as Button).Text[0];
                        textBox1.Text += (sender as Button).Text;
                        label1.Text += (sender as Button).Text;
                        textBox1.Clear();
                    }
                    else
                    {
                        sz = ch3;
                        label1.Text = sz.ToString();
                        znak = (sender as Button).Text[0];
                        textBox1.Text += (sender as Button).Text;
                        label1.Text += (sender as Button).Text;
                        textBox1.Clear();
                    }
                }
                catch
                {
                    return;
                }
        }
 
        private void button_ravno_Click(object sender, EventArgs e)
        {
            s = label1.Text;
            s1 = ",";
            try
            {
                if (s.EndsWith(s1)) label1.Text = label1.Text.Remove(s.Length-1 , 1); /*Если в конце ch2 будет стоять "," - она будет удалена по наж. на знак действия*/ 
            }
            catch
            {
                MessageBox.Show("Что-то пошло не так","",MessageBoxButtons.OK,MessageBoxIcon.Stop);
                label1.Text = "";
            }
 
            try
            {
                if (textBox1.Text =="")
                    return;
                else
                    ch2 = Convert.ToDouble(textBox1.Text);
 
                switch (znak)
                {
                    case '+':
                        if (ch6 == true)
                        {
                            ch6 = false;
                            ch3 = ch1 + ch2;
                        }
                        else
                            ch3 = sz + ch2;                       
                        break;
 
                    case '-':
                        if (ch6 == true)
                        {
                            ch6 = false;
                            ch3 = ch1 - ch2;
                        }
                        else
                            ch3 = sz - ch2; 
                        break;
 
                    case '*':
                        if (ch6 == true)
                        {
                            ch6 = false;
                            ch3 = ch1 * ch2;
 
                        }
                        else
                            ch3 = sz * ch2; 
                        break;
 
                    case '/':
                        if (ch2 == 0)
                        {
                            MessageBox.Show("Ошибка !!! ", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                        else
                            if (ch6 == true)
                            {
                                ch6 = false;
                                ch3 = ch1 / ch2;
                            }
                            else
                                ch3 = sz / ch2;
                        break;
                    default:
                        break;
                }
                label1.Text +="=" + ch3.ToString();
                textBox1.Clear();
                sz = ch3;
                ch7 = false;// Теперь после нажатия на "=" ввод цифр будет не возможен
                ch8 = false;
                ch9 = false;
 
            }          
            catch
            {
                return;
            }
        }
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char ch = e.KeyChar;
            if (!Char.IsDigit(ch) && ch !=8 && ch!=',' && ch!='+')
                e.Handled = true;
 
            if (e.KeyChar == '.')
                e.KeyChar = ',';
        }
 
        private void button_C_Click(object sender, EventArgs e)
        {
            znak = ' ';
            ch1 = ch2 = ch3 = sz = 0;
            textBox1.Text = "";
            label1.Text = "";
            ch6 = true;
            ch7 = true;
            ch8 = false;
            ch9 = true;
        }
 
        private void button_udal_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text != "") && (ch9==true)) textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length -1,1);
            if ((label1.Text != "") && (ch9==true)) label1.Text = label1.Text.Remove(label1.Text.Length - 1, 1);
        }
 
        private void button_sin_Click(object sender, EventArgs e)
        {
            try
            {
                ch5 = Convert.ToDouble(textBox1.Text);
                ch4 = System.Math.Sin(ch5);
                label1.Text = ch4.ToString();
            }
            catch
            {
                return;
            }
        }
 
        private void button_cos_Click(object sender, EventArgs e)
        {
            try
            {
                ch5 = Convert.ToDouble(textBox1.Text);
                ch4 = System.Math.Cos(ch5);
                label1.Text = ch4.ToString();
            }
            catch
            {
                return;
            }
        }
 
        private void button_tg_Click(object sender, EventArgs e)
        {
            try
            {
                ch5 = Convert.ToDouble(textBox1.Text);
                ch4 = System.Math.Tan(ch5);
                label1.Text = ch4.ToString();
            }
            catch
            {
                return;
            }
        }
 
        private void button_plus_minus_Click(object sender, EventArgs e)
        {
            if (ch6 != false && textBox1.Text!="" && label1.Text!="")
            {
                if (label1.Text.Contains('-') && textBox1.Text.Contains('-'))
                {
                    label1.Text = label1.Text.Remove(0, 1);
                    textBox1.Text = textBox1.Text.Remove(0, 1);
                }
                else
                {
                    label1.Text = '-' + label1.Text;
                    textBox1.Text = '-' + textBox1.Text;
                }
            }
        }
 
        private void button_tochka_Click(object sender, EventArgs e)
        {
            if (ch8 == true)
            {
                if (textBox1.Text.Contains(",") && label1.Text.Contains(","))//Ввод только одного десятичного разделителя в цисле
                {
                    return;
                }
                textBox1.Text += (sender as Button).Text;
                label1.Text += (sender as Button).Text;
            }
        }
    }
}
Добавлено через 43 секунды
Как мне там этот метод запилить???

Добавлено через 1 минуту
Цитата Сообщение от СвободныйНик Посмотреть сообщение
ещё проще:
Если не трудно-подскажи
0
185 / 175 / 114
Регистрация: 28.07.2013
Сообщений: 594
03.04.2015, 19:58 7
Лучший ответ Сообщение было отмечено dedlovscky как решение

Решение

Цитата Сообщение от dedlovscky Посмотреть сообщение
Как мне там этот метод запилить???
так бы сразу...
Цитата Сообщение от dedlovscky Посмотреть сообщение
Если не трудно-подскажи
примерно так - для стандартных 4-х (+,-,*,/), надо больше - думаю не проблема добавить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string[,] znaki = {{"-","0"},{"+","0"},{"*","0"},{"/","0"}};
...
private void button_znak_Click(object sender, EventArgs e)
{
    znak = (sender as Button).Text;
        for(int i=0; i<4;i++){
            if(znak == znaki[i,0]){
                    if(znaki[i,1] == "1"){
                        textBox1.Text = "";
                    }
                    znaki[i,1] = "1";
                }
             }
             
             textBox1.Text += znak;
        }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2015, 19:58

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как перейти из "Заголовок формы" в "Область данных" по нажатию "Tab" или другой комбинации клавиш?
Как перейти из &quot;Заголовок формы&quot; в &quot;Область данных&quot; по нажатию &quot;Tab&quot; или другой комбинации клавиш?

Избавиться от ошибки при нажатии на кнопку "Вперед" или "Назад" в браузере
При создании нечто похожего на браузер, появилась такая проблемка: я создаю две кнопки &quot;Вперёд&quot; и...

При нажатии на Button1 в Edit1 или Label1 записывается цифра 50, при повторном нажатии к этой 50 прибавляется еще 50. Как сделать?
Помогите сделать следующее. При нажатии на Button1 в Edit1 или Label1 записывается цифра 50, при...

Необходимо между каждой парой цифр поставить знак "<", ">" или "="
Дана строка, состоящая из цифр. Необходимо между каждой парой цифр поставить знак &quot;&lt;&quot;, &quot;&gt;&quot; или &quot;=&quot;....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.