|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||||||||||
Прицепить делегатов в классе формы13.11.2017, 14:55. Показов 4681. Ответов 113
Метки нет (Все метки)
Приветствую. Начал снова учить делегатов.
Хочу сделать следующее - есть форма и 2 текстовых бокса. При нажатии на кнопку в классе формы создаю 2 события на основании двух делегатов, в которые пойдут данные из текстбоксов. И делаю еще класс, который должен через делегатов принять эти значения. Т.е. чтобы форма не знала об этом классе хочу добиться. Но не могу понять, как обратиться из второго класса к моим событиям. Код в классе формы:
0
|
|||||||||||
| 13.11.2017, 14:55 | |
|
Ответы с готовыми решениями:
113
С формы прицепить файл PDF в поле OLE Перетаскиванием Image c формы прицепить его к узлу дерева Как обращаться к компонентам формы в классе, не прописывая везде имя формы |
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 20.11.2017, 14:36 [ТС] | |
|
Ну вот именно так я делаю, обзывая это бубличное событие кастомным.
Т.е. Sender, EventHandler - это только для "внутри класса формы"?
0
|
|
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
|
| 20.11.2017, 14:42 | |
|
PowerCat, нет. Вообще никакой связи с областью видимости у этих делегатов нет, от слова "совсем". Кнопка - деталь реализации класса формы. Внешний код об этом знать не должен.
Чисто технически, вы можете сделать кнопку публичной и получить к ней доступ извне класса формы, но это категорическое "фу".
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 20.11.2017, 15:25 [ТС] | |
|
Согласен полностью.
Благодарю за пояснения, оказывается, что шел правильным путем ))
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||||||||||
| 23.11.2017, 13:04 [ТС] | |||||||||||
|
Событие не видит свой обработчик в слушающем классе (возвращает null).
Класс слушающий:
0
|
|||||||||||
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
|
| 23.11.2017, 13:12 | |
|
PowerCat, а метод Subscibe() кто будет вызывать?
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 13:14 [ТС] | |
|
хм...интересный вопрос..
я полагал, что слушающий класс начинает работу в момент, когда ловит событие...
0
|
|
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
||
| 23.11.2017, 13:15 | ||
|
А код - ужас.
Заверните все аргументы в отдельный класс, не нужно всю эту портянку перечислять в аргументах. Используйте стандарные делегаты (Action<>, Function<>), не надо на каждый чих выдумывать свой (delegate_4String_2List_Double). Откуда такая тяга к статическим методам? Вы на Си, что ли, пишите? Добавлено через 41 секунду
0
|
||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||
| 23.11.2017, 13:19 [ТС] | ||
|
Статический метод - он стартовый, переименованный Program, отсюда все его методы статические. Да и используется он разово, экземпляры не нужны.
Мне проще написать значимое имя делегата, чем потом гадать... Аргументы в отдельный класс - хм, как-то в голову не приходило...Сделать их полями отдельного класса? На C# Добавлено через 2 минуты
0
|
||
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
|
| 23.11.2017, 13:22 | |
|
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 13:24 [ТС] | |
|
У меня почти всегда имена всего говорящие ))) не важно, что называю ))
Я поизучал Троелсена, лямбда-выражения, обобщенные делегаты...так и не понял - а зачем? Исключительно ради сокращения кода?
0
|
|
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
|||||||
| 23.11.2017, 13:26 | |||||||
0
|
|||||||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||
| 23.11.2017, 13:30 [ТС] | |||
|
Я понимаю, что так можно написать и сократить код. НО - мне проще явно все описывать, чтобы через полгода не ужасаться, что же тут такое было ))
Добавлено через 1 минуту Добавлено через 2 минуты
0
|
|||
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
|||
| 23.11.2017, 13:33 | |||
|
0
|
|||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||
| 23.11.2017, 14:49 [ТС] | |||
|
Добавлено через 1 час 12 минут Если сделать обычный класс, то для доступа к данным, "хранящимся" в нем, придется передавать между методами/классами ссылку на экземпляр, в которую все смогут что-нибудь класть. Я правильно понимаю идею? Т.е. вместо "портянки" аргументов - всегда только один аргумент? Или же надо делать статик класс, чтобы просто ссылаться на него, безэкземплярно?
0
|
|||
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
|
| 23.11.2017, 16:12 | |
|
PowerCat, создаёте класс, наполняете, передаёте. Если не хотите, чтобы после создания его содержимое изменялось, то сделайте его свойства доступными только для чтения. Слово "статик" забудьте.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 16:39 [ТС] | |
|
Передавать ссылкой на наполненный экземпляр класса?
0
|
|
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
|
| 23.11.2017, 17:14 | |
|
Да.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||||||
| 23.11.2017, 17:23 [ТС] | ||||||
|
Понятно.
Еще вопрос - как вот это модернизировать, чтобы воспользоваться Action? Тут же указывается делегат в явном виде.
0
|
||||||
|
14725 / 9495 / 1362
Регистрация: 21.01.2016
Сообщений: 35,806
|
||||||
| 23.11.2017, 18:30 | ||||||
|
PowerCat,
0
|
||||||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 20:22 [ТС] | |
|
хм...завтра буду пробовать, благодарю.
0
|
|
| 23.11.2017, 20:22 | |
|
Обработка событий формы в классе Вызов объектов формы в классе Расположение переменных в классе формы Функция класса не работает в классе формы Использование компонента формы в своем классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|