|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||||||||||
Прицепить делегатов в классе формы13.11.2017, 14:55. Показов 5049. Ответов 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
|
|
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
|
| 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
|
|||||||||||
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
|
| 23.11.2017, 13:12 | |
|
PowerCat, а метод Subscibe() кто будет вызывать?
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 13:14 [ТС] | |
|
хм...интересный вопрос..
я полагал, что слушающий класс начинает работу в момент, когда ловит событие...
0
|
|
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
||
| 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
|
||
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
|
| 23.11.2017, 13:22 | |
|
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 13:24 [ТС] | |
|
У меня почти всегда имена всего говорящие ))) не важно, что называю ))
Я поизучал Троелсена, лямбда-выражения, обобщенные делегаты...так и не понял - а зачем? Исключительно ради сокращения кода?
0
|
|
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
|||||||
| 23.11.2017, 13:26 | |||||||
0
|
|||||||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||
| 23.11.2017, 13:30 [ТС] | |||
|
Я понимаю, что так можно написать и сократить код. НО - мне проще явно все описывать, чтобы через полгода не ужасаться, что же тут такое было ))
Добавлено через 1 минуту Добавлено через 2 минуты
0
|
|||
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
|||
| 23.11.2017, 13:33 | |||
|
0
|
|||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||
| 23.11.2017, 14:49 [ТС] | |||
|
Добавлено через 1 час 12 минут Если сделать обычный класс, то для доступа к данным, "хранящимся" в нем, придется передавать между методами/классами ссылку на экземпляр, в которую все смогут что-нибудь класть. Я правильно понимаю идею? Т.е. вместо "портянки" аргументов - всегда только один аргумент? Или же надо делать статик класс, чтобы просто ссылаться на него, безэкземплярно?
0
|
|||
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
|
| 23.11.2017, 16:12 | |
|
PowerCat, создаёте класс, наполняете, передаёте. Если не хотите, чтобы после создания его содержимое изменялось, то сделайте его свойства доступными только для чтения. Слово "статик" забудьте.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 23.11.2017, 16:39 [ТС] | |
|
Передавать ссылкой на наполненный экземпляр класса?
0
|
|
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
|
| 23.11.2017, 17:14 | |
|
Да.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||||||
| 23.11.2017, 17:23 [ТС] | ||||||
|
Понятно.
Еще вопрос - как вот это модернизировать, чтобы воспользоваться Action? Тут же указывается делегат в явном виде.
0
|
||||||
|
14819 / 9598 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
|
||||||
| 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 | |
|
Обработка событий формы в классе Вызов объектов формы в классе Расположение переменных в классе формы Функция класса не работает в классе формы Использование компонента формы в своем классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|