|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||||||||||
Прицепить делегатов в классе формы13.11.2017, 14:55. Показов 4876. Ответов 113
Метки нет (Все метки)
Приветствую. Начал снова учить делегатов.
Хочу сделать следующее - есть форма и 2 текстовых бокса. При нажатии на кнопку в классе формы создаю 2 события на основании двух делегатов, в которые пойдут данные из текстбоксов. И делаю еще класс, который должен через делегатов принять эти значения. Т.е. чтобы форма не знала об этом классе хочу добиться. Но не могу понять, как обратиться из второго класса к моим событиям. Код в классе формы:
0
|
|||||||||||
| 13.11.2017, 14:55 | |
|
Ответы с готовыми решениями:
113
С формы прицепить файл PDF в поле OLE Перетаскиванием Image c формы прицепить его к узлу дерева Как обращаться к компонентам формы в классе, не прописывая везде имя формы |
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||
| 28.11.2017, 11:17 [ТС] | ||
|
Еще подскажите плз - может где-то есть советы по написанию не говнокода? Ну вот как ваш совет по хранению переменных в отдельном классе...может есть небольшой перечень подобных советов?
0
|
||
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|
| 28.11.2017, 11:27 | |
|
PowerCat, подобные вещи в виде справочников, к сожалению, не издаются. Есть ряд книг, которые мне сильно в этом вопросе помогли:
* Стив Макконнелл: Совершенный код * Эспозито, Сальтарелло: Microsoft .NET. Архитектура корпоративных приложений * Эрик Эванс: Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем * Гради Буч: Объектно-ориентированный анализ и проектирование с примерами приложений и т.д.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 28.11.2017, 11:34 [ТС] | |
|
Благодарю
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||||||
| 28.11.2017, 15:30 [ТС] | ||||||
|
Не задалось опять. Вроде все правильно
:
0
|
||||||
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|
| 28.11.2017, 16:40 | |
|
PowerCat, посмотрите внимательно на сигнатуру этого делегата, а потом на сигнатуру метода LongProcess.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||||||
| 28.11.2017, 16:54 [ТС] | ||||||
|
ну вроде все как в примере отсюда
0
|
||||||
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|
| 28.11.2017, 18:06 | |
|
PowerCat, это корретный пример. А ваш код - нет.
ParameterizedThreadStart ждёт метод принимающий object. Пример выше это условие выполняет, а ваш код - нет.
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 28.11.2017, 19:54 [ТС] | |
|
Так, тогда я что-то потерялся...Я делал обычно отдельный thread без аргументов, и без делегата в явном виде, просто писал new Thread (ссылка).Start() и все работало в десятках прог...
А тут откуда взялся объджект? Или оно, если с аргументами, всегда объджект будет хотеть? Конкретный аргумент не примет?
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|
| 28.11.2017, 20:25 | |
|
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|
| 28.11.2017, 20:26 | |
|
Надеюсь так понятно? Или нужно ещё десять раз объяснить про сигнатуру и что она имеет значение и что на неё нужно посмотреть, чтобы понять что и куда?)
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 29.11.2017, 09:27 [ТС] | |
|
о, ну дык это ж надо было бы смотреть справку по этому делегату, а я смотрел пример...
с сигнатурой все понятно, когда делегат сам делаешь, вопросов нет...а тут нечто нечтовое )
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
||
| 29.11.2017, 09:59 | ||
|
0
|
||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|||||||||||
| 29.11.2017, 14:56 [ТС] | |||||||||||
|
Ого, круто!
Не знал об этом ) Добавлено через 4 часа 52 минуты Программа работает как задумывал. Всех оказавших помощь благодарю, особенно Юсагу. Однако так до конца разобраться с делегатами не смог, а именно с кросс нитями. Вот в этом примере не понимаю: 1. Почему вызывается новый экземпляр делегата в классе-подписчике. Ведь аргумент передается в готовый экземпляр событие Progress 2. Почему сам делегат в классе-издателе описывается "выше" класса...и если его описать в классе, то не получается потом из класса-подписчика вызвать его через new класс-подписчик.делегат Конструкция рекурсии вопросов не вызывает.
0
|
|||||||||||
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|||
| 29.11.2017, 17:28 | |||
|
0
|
|||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 29.11.2017, 17:42 [ТС] | |
|
Да это все из-за того, что я не понял полностью работу с делегатами...буду еще другую литературу смотреть, не только Троелсена.
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|
| 29.11.2017, 19:27 | |
|
PowerCat, делегат - ссылка на метод. Что в этом такого сложного для понимания?
0
|
|
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
||
| 30.11.2017, 09:02 [ТС] | ||
|
А когда идет обмен данными между разными thread через делегатов, то тут все становится мутнейшим...Откуда-то появляются обращения к новому экземпляру делегата, а не к тому, через которого событие работает, да и делегат объявляется выше, а при объявлении в классе не работает... А просто применить делегат в виде простой ссылки на метод - вопроса нет...
0
|
||
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
||
| 30.11.2017, 09:11 | ||
|
0
|
||
|
0 / 2 / 1
Регистрация: 19.09.2013
Сообщений: 464
|
|
| 30.11.2017, 09:48 [ТС] | |
|
неосознанно я это понимаю, понимаю синхронизацию, рекурсию. НО - почему именно вот такая конструкция - непонятно. Т.е. в примерах, у того же Троелсена, написано КАК, но не расписано ПОЧЕМУ именно ТАК...Т.е. не написано, почему вызывается новый экземпляр делегата и т.д.
Вот расписал бы он построчно, что делает каждая операция и почему тут применяется именно она...
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,044
|
|
| 30.11.2017, 12:11 | |
|
PowerCat, что вы понимаете под "новым экземпляром делегата" и где вы это видите?
0
|
|
| 30.11.2017, 12:11 | |
|
Обработка событий формы в классе Вызов объектов формы в классе Расположение переменных в классе формы Функция класса не работает в классе формы Использование компонента формы в своем классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|