Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить нажата ли кнопка 
:(
    Опции темы
Yagmort
Дата 22.11.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 17.6.2009

Репутация: нет
Всего: -1



Как мне написать в другом методе код, проверки нажатия на кнопку. Как только не пытался не получается  ( 
Код

if (this.Button4.Click += new System.EventHandler(this.Button4_Click)) 
{

}
else if !(this.Button4.Click += new System.EventHandler(this.Button4_Click))
{

}

PM MAIL   Вверх
Экскалупатор
Дата 23.11.2010, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



а для чего? обычно делают наоборот, по событию (нажата такая то кнопка) запускается какой то метод. естественно что метод запустится только тогда когда нажата та кнопка которая его запустила(прям чувствую себя как КЭП). так что необходимость в проверке отпадает. если же у тебя несколько кнопок запускает один и тот же метод то можно передавать в метод какой-то ключ(содержимое поля Tag, имя кнопки, что то еще) и уже этот ключ проверять.
PM MAIL ICQ   Вверх
gambit
Дата 23.11.2010, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Цитата(Экскалупатор @  23.11.2010,  08:47 Найти цитируемый пост)
если же у тебя несколько кнопок запускает один и тот же метод то можно передавать в метод какой-то ключ(содержимое поля Tag, имя кнопки, что то еще) и уже этот ключ проверять. 

Или передать из метода события, объект sender

Добавлено через 1 минуту и 5 секунд
Код

if (this.Button4.Click += new System.EventHandler(this.Button4_Click)) 
{
}


какой то бредовый кусок, от которого компилятор должен откреститься
PM MAIL ICQ Skype   Вверх
C4EBA
Дата 23.11.2010, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.4.2009

Репутация: нет
Всего: 1



Может быть, Yagmortу нужен код, который позволит выяснить, что нажата конкретная кнопка (например, Button4)?
PM   Вверх
Yagmort
Дата 23.11.2010, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 17.6.2009

Репутация: нет
Всего: -1



Возможно но подойдет ли ваш ответ под мой я не знаю т.к. надо сперва проверить...
Надо именно. Так: если нажата кнопка1 то {код} иначе если кнопка1 не нажата {код}

PM MAIL   Вверх
Sartorius
Дата 23.11.2010, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



Цитата(Yagmort @  23.11.2010,  18:48 Найти цитируемый пост)
если нажата кнопка1 то {код} иначе если кнопка1 не нажата {код}

Первой проверки не достаточно?  smile 
По сабжу :  AFAIK это возможно только с DirectInput. Там можно что-то типа 
Код

device.GetPressedKeys()

сделать и получить   IEnumerable
PM MAIL ICQ   Вверх
Экскалупатор
Дата 23.11.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Yagmort, ты определись что значит "нажата". кнопка может быть нажата и отпущена - тогда это событие Click. оно короткое и запускает какой то код по событию Click(выполняется тот код который прописан в событии конкретной кнопки, можно ничего не проверять), если у тебя несколько кнопок подписаны на одно событие то можно проверить в событии через объект sender, и дальше передать что то в тот метод который тебе надо выполнить. но если под словом "нажата" подразумевается длительное нажатие(типа пользователь нажал и держит) и пока кнопка находится в нажатом состоянии нужно выполнить какой то код - то это совершенно другое дело. тут тебе нужно по событию button1_MouseDown запускать ппараллельный поток в котором и будет выполняться твой код, а по событию button1_MouseUp убивать поток с выполняющимся кодом.


Это сообщение отредактировал(а) Экскалупатор - 23.11.2010, 17:59
PM MAIL ICQ   Вверх
gambit
Дата 23.11.2010, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



я так и не понял, в чем же проблема, но вот накидал, выбирай.

Если же

Цитата(Экскалупатор @  23.11.2010,  17:56 Найти цитируемый пост)
если под словом "нажата" подразумевается длительное нажатие(типа пользователь нажал и держит) и пока кнопка находится в нажатом состоянии нужно выполнить какой то код - то это совершенно другое дело. тут тебе нужно по событию button1_MouseDown запускать ппараллельный поток в котором и будет выполняться твой код, а по событию button1_MouseUp убивать поток с выполняющимся кодом.

тут уже надо смотреть, что выбирать для потоков, но опять же, это никак не связано с определением кнопки.

Добавлено через 1 минуту и 9 секунд
Глюк какой то с присоединением файлов, качнуть можно здесь - http://files.mail.ru/3KIZQJ
PM MAIL ICQ Skype   Вверх
C4EBA
Дата 24.11.2010, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.4.2009

Репутация: нет
Всего: 1



Цитата(Yagmort @  23.11.2010,  17:48 Найти цитируемый пост)
если нажата кнопка1 то {код} иначе если кнопка1 не нажата {код}

Возможно, нужно проверить что БЫЛА нажата кнопка 1?
Например, на форме две кнопки. При нажатии на кнопку 2 выполняется код в зависимости от того, была ли до этого нажата кнопка1: если была нажата кнопка 1 - "код 1", если не была нажата кнопка 1 - "код 2".
PM   Вверх
gambit
Дата 24.11.2010, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Цитата(C4EBA @  24.11.2010,  09:38 Найти цитируемый пост)
Возможно, нужно проверить что БЫЛА нажата кнопка 1?
Например, на форме две кнопки. При нажатии на кнопку 2 выполняется код в зависимости от того, была ли до этого нажата кнопка1: если была нажата кнопка 1 - "код 1", если не была нажата кнопка 1 - "код 2". 

ну тогда завести флаг, и ставить его в true  в обработчике события первой кнопки
PM MAIL ICQ Skype   Вверх
Yagmort
Дата 26.11.2010, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 17.6.2009

Репутация: нет
Всего: -1



Цитата(gambit @ 24.11.2010,  13:07)
Цитата(C4EBA @  24.11.2010,  09:38 Найти цитируемый пост)
Возможно, нужно проверить что БЫЛА нажата кнопка 1?
Например, на форме две кнопки. При нажатии на кнопку 2 выполняется код в зависимости от того, была ли до этого нажата кнопка1: если была нажата кнопка 1 - "код 1", если не была нажата кнопка 1 - "код 2". 

ну тогда завести флаг, и ставить его в true  в обработчике события первой кнопки

Заводил не работает.
PM MAIL   Вверх
gambit
Дата 26.11.2010, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Опиши нормально, что тебе надо. А вот маленький и кривой пример с флагом и без флага.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  WindowsFormsApplication2.zip 30,91 Kb
PM MAIL ICQ Skype   Вверх
Экскалупатор
Дата 26.11.2010, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Yagmort, что заводил? как? что именно не работает? активнее, а то такое чувство что тут одни телепаты должны тебе отвечать. типа сами догадайтесь что мне надо и почему у меня не получается.
PM MAIL ICQ   Вверх
wester
Дата 26.11.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



Yagmort, 
ничего не понял.
скопируй из предложенных мною вариантов, тот который надо реализовать 
1) создаешь на самой форме WinForms кнопку, и нужна проверка нажата ли кнопка на этой форме (нажата и отпущена)
2) создаешь на самой форме WinForms кнопку, и нужна проверка нажата ли кнопка на этой форме (нажата и продолжается нажатие)
3) запускаешь форму, нажимаем для примера кнопку Enter на клавиатуре и нужна проверка нажата ли кнопка на клавиатуре (нажата и отпущена)
4) запускаешь форму, нажимаем для примера кнопку Enter на клавиатуре и нужна проверка нажата ли кнопка на клавиатуре (нажата и продолжается нажатие)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.