Как проверить нажата ли любая кнопка?
При попытке скомпилировать в gcc на MacOS компилятор выплевывает фразу :
fatal error: conio.h: No such file or directory 2 | #include | ^~~~~~~~~
- Есть ли возможность заменить этот кусок кода? И что-бы скомпилировалось без ошибок без использования conio.h?
- Или! Как (куда?) установить (закинуть в папку с компилятором или как?) этот conio?
- ну или заменить на какой-нибудь scanf из разряда типа
#include int main() < char ch; while (1)< //некий код if ( scanf("%c", ch) = 'кнопка нажата') < printf("Кнопка нажата \n"); >else < ( scanf("%c", ch) = 'кнопка не нажата') < printf("Кнопка не нажата \n"); >//некий код > >
Как проверить нажата ли любая кнопка?
При попытке скомпилировать в gcc на MacOS компилятор выплевывает фразу :
fatal error: conio.h: No such file or directory 2 | #include | ^~~~~~~~~
- Есть ли возможность заменить этот кусок кода? И что-бы скомпилировалось без ошибок без использования conio.h?
- Или! Как (куда?) установить (закинуть в папку с компилятором или как?) этот conio?
- ну или заменить на какой-нибудь scanf из разряда типа
#include int main() < char ch; while (1)< //некий код if ( scanf("%c", ch) = 'кнопка нажата') < printf("Кнопка нажата \n"); >else < ( scanf("%c", ch) = 'кнопка не нажата') < printf("Кнопка не нажата \n"); >//некий код > >
C # Проверка, была ли нажата кнопка
Я делаю программу, которая должна быть продолжена, если даны 2 условия. Первый 2 TextBoxes имеет одно и то же слово и нажата кнопка, которая открывает новую форму. Вы видите, что я пытаюсь создать регистрационную форму;) Теперь у меня есть событие для «полной» кнопки.
private void button2_Click(object sender, EventArgs e) < if (textBox2.Text == textBox3.Text && . ) < StreamWriter myWriter = File.CreateText(@"c:\Program Files\text.txt"); myWriter.WriteLine(textBox1.Text); myWriter.WriteLine(textBox2.Text);
Моя проблема в том, что я не могу найти метод, который дает что-то вроде button1.Click или что-то похожее. Я надеюсь, что кто-то может мне помочь здесь.
ItsLuckies 15 май 2013, в 01:01
Поделиться
Поделиться:
4 ответа
Лучший ответ
Click - это событие, которое срабатывает сразу после отпускания кнопки мыши. Поэтому, если вы хотите проверить обработчик для button2.Click , если раньше был нажат button1 , все, что вы могли сделать, это иметь обработчик для button1.Click , который устанавливает флаг bool вашего собственного значения в true.
private bool button1WasClicked = false; private void button1_Click(object sender, EventArgs e) < button1WasClicked = true; >private void button2_Click(object sender, EventArgs e) < if (textBox2.Text == textBox3.Text && button1WasClicked) < StreamWriter myWriter = File.CreateText(@"c:\Program Files\text.txt"); myWriter.WriteLine(textBox1.Text); myWriter.WriteLine(textBox2.Text); button1WasClicked = false; >>
Jan Doerrenhaus 14 май 2013, в 23:37
Поделиться
Не забудьте сбросить флажок после его проверки. В противном случае это будет работать только один раз.
Robert Harvey♦ 14 май 2013, в 22:23
Виноват. +1 и отредактировано.
Jan Doerrenhaus 14 май 2013, в 22:24
Где я должен заполнить приватный bool button1WasClicked = false; ?
ItsLuckies 14 май 2013, в 22:27
Это поле внутри вашего класса формы.
Jan Doerrenhaus 14 май 2013, в 22:27
Понял, спасибо 😉
ItsLuckies 14 май 2013, в 22:28
Что я могу сделать, если моя система сообщает, что доступ запрещен для создания текстового файла?
ItsLuckies 14 май 2013, в 22:30
Не храните ваш текстовый файл в разделе Program Files. Эта папка специально защищена в современных версиях Windows 🙂
Jan Doerrenhaus 14 май 2013, в 22:32
Хорошо спасибо 🙂 !
ItsLuckies 14 май 2013, в 22:38
этот метод применяется, если у меня есть несколько кнопок?
user3821206 27 янв. 2016, в 21:56
@ user3821206 Конечно, почему бы и нет. Имейте один логический флаг для каждой кнопки.
Jan Doerrenhaus 01 фев. 2016, в 14:33
Показать ещё 8 комментариев
Я очень новичок в этом сайте. Я студент бакалавриата, занимаюсь бакалавром компьютерных приложений. Я делаю простую программу в Visual Studio с помощью С#, и я столкнулся с той же проблемой, как проверить, нажата ли кнопка? Я хотел сделать это,
if(-button1 is clicked-) then < this should happen; >if(-button2 is clicked-) then
Я не знал, что делать, поэтому я попытался найти решение в Интернете. У меня много решений, которые мне не помогли. Итак, я попробовал что-то самостоятельно и сделал это,
int i; private void button1_Click(object sender, EventArgs e) < i = 1; label3.Text = "Principle"; label4.Text = "Rate"; label5.Text = "Time"; label6.Text = "Simple Interest"; >private void button2_Click(object sender, EventArgs e) < i = 2; label3.Text = "SI"; label4.Text = "Rate"; label5.Text = "Time"; label6.Text = "Principle"; >private void button5_Click(object sender, EventArgs e) < try < if (i == 1) < si = (Convert.ToInt32(textBox1.Text) * Convert.ToInt32(textBox2.Text) * Convert.ToInt32(textBox3.Text)) / 100; textBox4.Text = Convert.ToString(si); >if (i == 2) < p = (Convert.ToInt32(textBox1.Text) * 100) / (Convert.ToInt32(textBox2.Text) * Convert.ToInt32(textBox3.Text)); textBox4.Text = Convert.ToString(p); >
Я объявил переменную "i" и присвоил ей разные значения в разных кнопках и проверил значение я в функции if. Это сработало. Дайте свои предложения, если они есть. Спасибо.
Как проверить нажата ли кнопка?
Что б изменять цвет, можно намного проще сделать. В WPF есть триггеры событий, и там надо прописать, что при наведении мыши меняем цвет. Как это сделать. Мэтью Макдоналд wpf 4 c# очень подробно или в гугле пробей по wpf+с#+триггеры
10 мая 2012 в 6:58
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Если вы хотите стилизовать кнопку при нажатии на неё, то добавьте в стиль кнопки триггер, срабатывающий при IsMouseCaptured == true или IsPressed == true . Имейте в виду, что стандартный стиль кнопки не очень хорошо поддерживает изменение фонового цвета, поэтому кнопка будет выглядеть не так красиво, как хотелось бы.
Ваша проверка в событии Click не срабатывает, потому что событие приходит после того, как вы отпустите кнопку.