Как проверить нажата ли кнопка c
Перейти к содержимому

Как проверить нажата ли кнопка c

  • автор:

Как проверить нажата ли любая кнопка?

При попытке скомпилировать в gcc на MacOS компилятор выплевывает фразу :

fatal error: conio.h: No such file or directory 2 | #include | ^~~~~~~~~ 
  1. Есть ли возможность заменить этот кусок кода? И что-бы скомпилировалось без ошибок без использования conio.h?
  2. Или! Как (куда?) установить (закинуть в папку с компилятором или как?) этот conio?
  3. ну или заменить на какой-нибудь 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 | ^~~~~~~~~ 
  1. Есть ли возможность заменить этот кусок кода? И что-бы скомпилировалось без ошибок без использования conio.h?
  2. Или! Как (куда?) установить (закинуть в папку с компилятором или как?) этот conio?
  3. ну или заменить на какой-нибудь 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 не срабатывает, потому что событие приходит после того, как вы отпустите кнопку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *