Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка Windows Forms > события и делегаты для кнопки (замена EventArgs) |
Автор: AGENTxXx 22.4.2016, 11:56 | ||||||
Всем привет! Пытаюсь вот до конца вникнуть в события и делегаты, и вроде как увидел след. информацию:
Это цитата из rsdn. Решил вот сделать что-то подобное (т.е. унаследовать от EventArgs и добавить поля:
Но в ответ получаю ошибку на след. строке:
Возвращаемая ошибка: Error 1 No overload for 'btn_Method' matches delegate 'System.EventHandler' c:\users\admin\documents\visual studio 2012\Projects\DelegateExmpl\DelegateExmpl\Form1.cs 23 30 DelegateExmpl Хотел бы, чтобы пояснили всё же, реально ли это сделать, или такое можно сделать только на полностью "разработанном" объекте в ручную, а забитую информацию в .Net библиотеки уже не поменять и можно использовать только EventArgs? Только вроде начал понимать, и опять что-т запутался на этом месте. |
Автор: infarch 22.4.2016, 13:41 | ||
Для начала, событие Клик у кнопки рассчитывает получить вторым параметром именно EventArgs, а не производный класс. Так что вам остается только привести стандартный класс к вашему:
И теперь о грустном: в случае обычного клика по кнопке вы поймаете эксепшен. Фреймворк вызывает событие именно с EventArgs, а о ваших производных ему ничего не известно. Вот если вы сами создаете некое событие у некоего класса, и сами же его вызываете то можете использовать какие угодно параметры, не проблема. |
Автор: AGENTxXx 23.4.2016, 14:34 |
А встречались ли случаи, когда EventArgs как-то использовался в коде разработчиком. Просто на сколько я понял, там хранится в основном инфа вспомогательная для самой программы. Просто пока так и не увидел смысла, почему пришли разработчики .Net к такой идеологии... Или типа просто так реализовали и всё?... |
Автор: infarch 25.4.2016, 10:36 |
Я использовал в своих поделках. По сути, в своих обработчиках событий вы можете вообще никаких аргументов не юзать, если не надо. Но если вы, например, наследуетесь от некоего стандартного класса и хотите кинуть его событие вручную со своими дополнительными данными, то наследование от EventArgs очень помогает. Ну и для красоты и расширяемости я предпочитаю чтоб все события имели стандартную форму аргументов. |