![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 1 Всего: 61 |
Всем привет!
Вот прочитал, что для реагирования компонента на какое-нибудь событие можно поступить двояко: 1. Создать делагат на нужную функцию, например:
2. Непосредственное замещение метода:
Поясните, когда что лучше использовать. Пока вижу только одно различие: в первом случае можно подвесить много делегатов -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
дело в том, что сам контрол (форма) внутри себя тоже может быть подписана на свое же событие. Пример - Paint. Если мы не подписываемся на Paint, то базовый обработчик вызывается делегатом события автоматически.
Если переопределяем виртуальный метод-обработчик, то всегда вызываем base.OnPaint() явно, ведь старая реализация сама не вызовется. Если ты используешь вариант 1, то выполнится base.OnMouseUp() и твой MainWindow_MouseUp() Если ты используешь вариант2, то выполнится только твой OnMouseUp() Есть еще третий способ - анонимные делегаты. вот тут есть преймущества - в методе видны переменные с областью действия функции, содержащей объявление делегата.
а по поводу количества обработчиков - метод подписки значения не имеет. Все события - потомки от MulticastDelegate и поддерживают списки обработчиков. Это сообщение отредактировал(а) tol05 - 8.10.2007, 14:42 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 1 Всего: 61 |
tol05,
Мдя... сиба за инфу -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |