|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.10.2012, 04:48 | #1 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Назначение обработчиков события
Использую C# уже около 3 лет и иногда просматривая код формы, написанной под WinForms, никогда не понимал почему присвоение событий для button и другого делается через '+='. Сейчас перешел на Mono/Gtk#, в котором этот код будет выглядеть следующим образом:
Код:
Код:
Начинаю смотреть описание событий, работу с ними, попутно работая в MonoDevelop и замечаю, что помимо оператора "+=", к System.EventHendler можно применить и "-=". Пробую: Код:
Теперь небольшие вопросы: 1)как понимаю, в первом случае все работало в принципе правильно (второй тег CODE), только вместо выполнения при повторном нажатии на кнопку одного метода OnButton1Clicked_SecondMethod, исполнилось бы два метода: OnButton1Clicked и OnButton1Clicked_SecondMethod - каким тогда образом организовано событие Button.Clicked - массив, список или что-то иное?; 2)в каких конкретных случаях может быть полезна указанная методика (исполнение нескольких обработчиков на одно событие)?; 3)крайне интересно, почему к событиям нельзя применить простой операнд "="?; 4)каким образом можно удалить обработчики всех событий OnClick, заранее не зная наименования методов?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Последний раз редактировалось Mixim; 03.10.2012 в 06:30. |
03.10.2012, 10:26 | #2 |
:D
Форумчанин
Регистрация: 26.09.2010
Сообщений: 570
|
События - это особый вид делегатов, у них переопределены методы += и -= (скорее всего, я где-то ошибаюсь).
Насчет удаления ВСЕХ функций - не знаю, не сталкивался Так, я бы посоветовал вам прочитать про события, вот тут : C# 4.0 полное руководство, или на msdn
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery |
04.10.2012, 08:34 | #3 | |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Цитата:
Переговорив со своими знакомыми, пришел к выводу, что можно сделать класс для SerialPort, в которой данный класс использовать как поле с модификатором protected просто опубликовать и с помощью методов-оберток сделать открытыми/закрытыми определенные методы/события SerialPort, но по-моему это не самый удачный вариант. Жалко, что C# не позволяет по-простому выполнить указанную задачу
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
|
04.10.2012, 10:32 | #4 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
какие-то у тебя неправильные знатоки c#, это скучный вопрос про базовые возможности языка, ну кто будет тут тебе расписывать целую главу книги?
переопределить нельзя, удалить все обработчики нельзя, операнд = применить нельзя, внутри организовано через список, да. Почему? глава книги "события".. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Назначение события кнопке, созданной в Internet Explorer | artemavd | Общие вопросы Delphi | 6 | 02.07.2011 13:18 |
Назначение обработчиков для строк ListBox | Byurrer | Общие вопросы C/C++ | 2 | 23.04.2011 16:10 |
Назначение обработчика события | Gypsy | Общие вопросы Delphi | 2 | 22.12.2009 09:50 |
Назначение события | EA_Sports | Общие вопросы Delphi | 2 | 11.03.2007 00:45 |