|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||||||||||
Прицепить делегатов в классе формы13.11.2017, 14:55. Показов 4942. Ответов 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
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
|
| 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
|
|||||||||||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
|
| 23.11.2017, 13:12 | |
|
PowerCat, а метод Subscibe() кто будет вызывать?
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 13:14 [ТС] | |
|
хм...интересный вопрос..
я полагал, что слушающий класс начинает работу в момент, когда ловит событие...
0
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
||
| 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
|
||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
|
| 23.11.2017, 13:22 | |
|
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 13:24 [ТС] | |
|
У меня почти всегда имена всего говорящие ))) не важно, что называю ))
Я поизучал Троелсена, лямбда-выражения, обобщенные делегаты...так и не понял - а зачем? Исключительно ради сокращения кода?
0
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
|||||||
| 23.11.2017, 13:26 | |||||||
0
|
|||||||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||
| 23.11.2017, 13:30 [ТС] | |||
|
Я понимаю, что так можно написать и сократить код. НО - мне проще явно все описывать, чтобы через полгода не ужасаться, что же тут такое было ))
Добавлено через 1 минуту Добавлено через 2 минуты
0
|
|||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
|||
| 23.11.2017, 13:33 | |||
|
0
|
|||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||
| 23.11.2017, 14:49 [ТС] | |||
|
Добавлено через 1 час 12 минут Если сделать обычный класс, то для доступа к данным, "хранящимся" в нем, придется передавать между методами/классами ссылку на экземпляр, в которую все смогут что-нибудь класть. Я правильно понимаю идею? Т.е. вместо "портянки" аргументов - всегда только один аргумент? Или же надо делать статик класс, чтобы просто ссылаться на него, безэкземплярно?
0
|
|||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
|
| 23.11.2017, 16:12 | |
|
PowerCat, создаёте класс, наполняете, передаёте. Если не хотите, чтобы после создания его содержимое изменялось, то сделайте его свойства доступными только для чтения. Слово "статик" забудьте.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 16:39 [ТС] | |
|
Передавать ссылкой на наполненный экземпляр класса?
0
|
|
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
|
| 23.11.2017, 17:14 | |
|
Да.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||||||
| 23.11.2017, 17:23 [ТС] | ||||||
|
Понятно.
Еще вопрос - как вот это модернизировать, чтобы воспользоваться Action? Тут же указывается делегат в явном виде.
0
|
||||||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,061
|
||||||
| 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 | |
|
Обработка событий формы в классе Вызов объектов формы в классе Расположение переменных в классе формы Функция класса не работает в классе формы Использование компонента формы в своем классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|