|
|
|
Управление событиями
|
|||
|---|---|---|---|
|
#18+
Хотел бы поднять тему, интересующую, как мне кажется, многих - как правильно управлять событиями. Например, есть готовый класс, в котором привязаны события (например, в классе есть кнопка с приязанными событиями) и мне необходимо изменить события таким образом, чтобы запускался мой код, а уже потом, в зависимости от моего кода выполнялись события, привязанные ранее (или не выполнялись, или выполнялись избранные). В качестве примера, приведу код, который переопределяет подобным образом нажатие на кнопку "Удалить" в BindingNavigator с целью - обсудить его. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Вопрос вот какой - почему так делать не рекомендуется? Да, я понимаю, что я ображаюсь к внутренним (не интерфейсным) полям и свойствам классов, и производитель вправе поменять это свойство и внутреннюю реализацию как ему вздумается, и в этом случае мой код работать не будет. Однако, зададим себе вопрос. Если я использую FW 3.5 SP1 и именно под него пишу проект, вряд ли Microsoft выпустит SP2 и т.д., в котором коренным образом изменит внутренности. Т.е. использование такого кода достаточно безопасно? Конечно, если мы хотим, чтобы эти классы гарантированно использовались в дальнейших версиях FW, то так писать не нужно, но что делать, если такое переопределение необходимо, а других механизмов пока не видно? Как видите, вопрос совсем не религиозный, а очень даже практический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 08:59 |
|
||
|
Управление событиями
|
|||
|---|---|---|---|
|
#18+
Думаю в первую очередь нужно подумать о дизайне программы, возможно то, что вы придумали по изменению событий можно сделать намного проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 09:05 |
|
||
|
Управление событиями
|
|||
|---|---|---|---|
|
#18+
Можно сделать. Но при этом придеться переписывать ЗАНОВО код, который УЖЕ НАПИСАН в событии родительского класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 21:15 |
|
||
|
Управление событиями
|
|||
|---|---|---|---|
|
#18+
Нужно стремиться к простоте. Через некоторое время вам придется разбираться в этом коде снова, для внесения изменений к примеру. И вы потратите скорее всего на это уйму времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 08:13 |
|
||
|
Управление событиями
|
|||
|---|---|---|---|
|
#18+
Про "простоту" - полностью согласен. Но вопрос остался - что делать, когда нужно переопределять события? Мне кажется дело в том, что в .NET эта проблема не решена в должной мере. Т.е. механизма управления событиями, кроме как += -= нет. Отсюда и вытекает этот достаточно сложный код (и не очень корректный - с точки зрения обращения к внутренним свойствам класса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2010, 09:04 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=63&tid=1351519]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 346ms |

| 0 / 0 |
