Вопрос: keydown | Добавлено: 14.03.09 20:36 |
Автор вопроса: ![]() |
Всем привет!
У меня на форме много кнопок панелей и т.д. Мне нужно сделать так что бы когда в программе нажали на кнопку допустим 1 в label.text появлялось 1 если 2 то 2.Можно ли написать 1 раз функцию или что то вроде этого, а не писать один и тотже код в событии keydown у каждого элемента формы? |
Ответы | Всего ответов: 18 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #1 | Добавлено: 14.03.09 23:25 |
Можно.. для это тебе надо через AddHandler повесить событие Click каждой кнопки на одну и туже процедуру.. Кроме этого.. есть такой приемчик: ты в свойство Tag для каждой кнопки прописываешь нужную цифру (или текст) а в событии Click получаешь из этого свойства текст и загоняешь в нужный label. В результате у тебя получится 2-3 строки кода вместо кучи процедур для каждой кнопки |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 16.03.09 17:17 |
А где мне найти этот AddHandler?)) |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #3 | Добавлено: 16.03.09 17:48 |
maza пишет:
А где мне найти этот AddHandler?)) Нууу например в msdn.. http://msdn.microsoft.com/ru-ru/library/7taxzxka.aspx или в гугле с яндеком.. надеюсь тебя в поисковых машинах не забанили? или ты вообще искать не пробовал? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 16.03.09 22:06 |
EROS, Я вроде разобрался кое как сам) посмари плз правильно или можно как то сократить?
|
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #5 | Добавлено: 16.03.09 22:35 |
maza пишет:
EROS, Я вроде разобрался кое как сам) посмари плз правильно или можно как то сократить? Ну не совсем и сам.. ))) Но молодец, что хоть пытаешь что то сам сделать.. ![]() Во-первых.. для чего тебе событии KeyDown у кнопки? У конпки, как правило, обрабатывают событие Click Во-вторых.. твой код, в принципе, работать будет, но это, прямо скажем, кривой код. Правильнее было бы перебрать коллекцию контролов на форме и в цикле подключить все обработчики событий. Сделать это можно в Form_Load примерно так:
ну и чтобы тебе легче было понимать мой код можешь воспользовать одним из online переводчиков кода, например этим: http://converter.telerik.com/ переводит достаточно криво но общий смысл ты уловить сможешь.. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 16.03.09 22:39 |
Просто я вопрос не очень точно задал)) мне нужно нажатие клавиш с клавиатуры )) |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 16.03.09 22:40 |
Спасибо кстате![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 16.03.09 22:55 |
Чо то не хочет работать этот код:
|
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #9 | Добавлено: 16.03.09 23:06 |
maza пишет:
AddHandler (item.KeyDown), AddressOf Form1_KeyDown скобки убери - это раз.. во вторых кнопки должны лежать на форме.. если же они у тебя лежат в каком нибудь контейнере типа Panel(TabPage и т.д.) , то и указывать надо For Each item As Control In Panel1.Controls и на будущее, прежде чем писать Чо то не хочет работать этот код
будь добр напиши что за ошибку пишет.. я хоть и обладаю телепатическими способностями но не до такой степени |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 16.03.09 23:07 |
никакой ошибки нету всё правильно но они у меня на панеои лежат |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 16.03.09 23:10 |
они у меня на groupbox'e лежат значит нада писать groupbox.controls? |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 16.03.09 23:15 |
я пишу:
Ошибка:Error 1 Reference to a non-shared member requires an object reference. |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #13 | Добавлено: 16.03.09 23:16 |
ну да.. только вместо groupbox надо писать реальное имя этого контрола, например groupbox1.Controls
Controls - это коллекция дочерних элементов контейнера, в данном случае у тебя groupbox1 выступает в роли контейнера для кнопок и остальных элементов |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #14 | Добавлено: 16.03.09 23:17 |
maza пишет:
Error 1 Reference to a non-shared member requires an object reference. все правильно, эта ошибка говорит о том, что у тебя на форме нету контрола с именем Panel |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 9968842 Вопросов: 40 Ответов: 337 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 16.03.09 23:18 |
Воо)))урааа работает!! спасибо большое!)) а нельзя написать что нибудь типа For Each item As Control In groupbox1.controls and groupbox2.controls? |
|