![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| jackfall |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Создал составной элемент управления, панелька, кнопка и текст. накидал их потом на форму, ставлю события на нажатие мыши, а нет( не работает вообще. Вообще никакие события е работают. Может их надо было как то переопределять когда создавал ЭУ? Подскажите плз.
|
|||
|
||||
| antikom |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.11.2008 Репутация: нет Всего: 1 |
Смотря какое событие. Покажи код будем разбираться.
|
|||
|
||||
| jackfall |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
та из стандартных.. в окне выбрать.. например MouseDown.
|
|||
|
||||
| antikom |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.11.2008 Репутация: нет Всего: 1 |
Попробуй переопределить событие:
|
|||
|
||||
| Unlocker |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 2.11.2007 Где: Москва - Знаменск (Капустин Яр) Репутация: нет Всего: 2 |
Нет никаких проблем для перехвата событий на контроле.
Порядок действий очень простой. не надо ничего переопределять. 1)ставишь прослушку сообщений о событиях
2)определяешь реакцию на событие
3)вырубаешь прослушку, когда необходимо
Практически тоже самое можно сделать и в дизайнере VS, но если надо управлять прослушкой сообщений гибко, т.е. от одинаковых событий действовать по-разному, то придется вручную управлять прослушкой и перенаправлением вызовов (callback). в остальном все прозрачно. если что-то неясно, то рекомендую книги Э. Троелсена, потому что там это хорошо и просто описано. --------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b." |
||||||
|
|||||||
| jackfall |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
antikom, пробовал переопределять - не помогает.
Unlocker, это тоже не работает( |
|||
|
||||
| Unlocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 2.11.2007 Где: Москва - Знаменск (Капустин Яр) Репутация: нет Всего: 2 |
Тогда код в студию. Я это сделал три дня назад, и это работало.
+ требуются объяснения какие события нужны, как осуществляется проверка событий? --------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b." |
|||
|
||||
| jackfall |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Ну.. я незнаю.. поможет ли код компонента:
Ну и там где я на форму поставил этот ЭУ такой вот обработчик к примеру (ну и в дезайнере стоит автоматически добавление обработчика на это):
Это сообщение отредактировал(а) jackfall - 29.1.2009, 16:10 |
||||
|
|||||
| Unlocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 2.11.2007 Где: Москва - Знаменск (Капустин Яр) Репутация: нет Всего: 2 |
Код смотреть надо в других местах.
1) Надо раскрыть код дизайнера (#region "InitializeComponents") и посмотреть какие события у каких компонентов объявлены на прослушку. Этот код тоже нужен. 2) Если ты хочешь создать событие, отличное от стандартных событий компонентов контрола, то надо прописать делегатов для данного вида событий, и непосредственно само событие. В зависимости от пожеланий делаются разные манипуляции. И, запомни, с дизайнером нужно работать по принципу: "доверяй, но проверяй". --------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b." |
|||
|
||||
| jackfall |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Unlocker, Свои события делал, это без проблем. научился)
а вот что тут такое непонятно( В дизайнере есть
Это сообщение отредактировал(а) jackfall - 29.1.2009, 17:16 |
|||
|
||||
| Unlocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 2.11.2007 Где: Москва - Знаменск (Капустин Яр) Репутация: нет Всего: 2 |
В таком случае могу посоветовать воспользоваться встроенным в студию дебаггером.
Если ничего не получится, то можешь залить на форум архив с проектом, постараюсь выяснить в чем дело. --------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b." |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
В прилагаемом проекте есть контрол, на который я бросил две панели. Клик по нижней панели вызывает событие "Click" самого контрола. В форме для него назначен обработчик.
Присоединённый файл ( Кол-во скачиваний: 11 )
EventImport.rar 53,32 Kb-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| jackfall |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
diadiavova, да, так работает. Но тогда если я хочу чтобы клик ЭУ происходил при нажатии на любой компонент в самом ЭУ то так на все нужно сделать внутри него.. на кнопку, на панель, на надпись.. например.
Unlocker, Прикладываю пример... просто мой ЭУ (панель, надпись и кнопка) на форме. событие
не происходит. вобщем-то я догадываюсь почему.. В самом ЭУ ведь есть основа - MyUserControl. Видимо при вышеуказанном событии myUserControl1_MouseClick клик должен происходить по ней чтобы вызвалось, а она внизу.. под панелью. И поэтому наверно не происходит. Подскажите... может я чего-то просто не учел) Это сообщение отредактировал(а) jackfall - 30.1.2009, 17:53 Присоединённый файл ( Кол-во скачиваний: 2 )
TempProject.7z 21,04 Kb |
|||
|
||||
| Unlocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 2.11.2007 Где: Москва - Знаменск (Капустин Яр) Репутация: нет Всего: 2 |
Все верно, события клика не происходит, потому что клик идет по дочерним контролам.
Тут два варианта можно предложить: 1) сделать контролы прозрачными для взаимодействия, установив свойство
2) перехватывать события дочерних контролов и перенаправлять их форме UserControl. Этот вариант гибче, но сложнее, т.к. придется управлять самостоятельно перенаправлением обработчиков событий. Все зависит от поставленной задачи и требований к ее выполнению по времени и функционалу. --------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b." |
|||
|
||||
| jackfall |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.12.2008 Репутация: нет Всего: нет |
Unlocker, если enabled ставить false, то они и выглядят неактивными...
всем спасибо) Это сообщение отредактировал(а) jackfall - 31.1.2009, 00:36 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |