Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как вызвать следующее событие? / 5 сообщений из 5, страница 1 из 1
30.01.2019, 09:41
    #39766861
Mixon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать следующее событие?
Добрый день!
Есть ЮзерКонтрол с компонентами и у одного из в контейнере я подвязываю событие, как из ЮзерКонтрола вызвать внешнее событие, если оно конечно есть?
...
Рейтинг: 0 / 0
30.01.2019, 11:29
    #39766921
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать следующее событие?
MixonДобрый день!
Есть ЮзерКонтрол с компонентами и у одного из в контейнере я подвязываю событие, как из ЮзерКонтрола вызвать внешнее событие, если оно конечно есть?
объявить делегат или воспользоваться существующими
объявить событие в класс UserControl'а
подписаться из вне на это событие, например, в форме
вызвать событие через EventName?.Invoke() в UserControl
обрабатывать это событие, в форме.
...
Рейтинг: 0 / 0
30.01.2019, 13:16
    #39766997
Mixon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать следующее событие?
Так и сделал, но думал может есть еще варианты :)

Спасибо за ответ!
Roman MejtesMixonДобрый день!
Есть ЮзерКонтрол с компонентами и у одного из в контейнере я подвязываю событие, как из ЮзерКонтрола вызвать внешнее событие, если оно конечно есть?
объявить делегат или воспользоваться существующими
объявить событие в класс UserControl'а
подписаться из вне на это событие, например, в форме
вызвать событие через EventName?.Invoke() в UserControl
обрабатывать это событие, в форме.
...
Рейтинг: 0 / 0
30.01.2019, 16:01
    #39767161
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать следующее событие?
вариант №2
UserControl находит объект формы рекурсивно, через Parent, приводит её к необходимому типу, вызываем public метод в этой форме.
такой вариант, плохой, потому, что:
a) UserControl должен знать точный интерфейс или тип формы в которой реализуется вызываемый метод
b) Такое поведение не очевидно
c) Метод который вы вызываете, должен быть закрытым членом, так как представляет из себя внутреннюю реализацию формы, а этот неправильный вариант требует сделать его с модификатором public или internal, что нарушает принципы инкапсуляции

Вариант №3
Передавайте в UserControl делегат и вызывайте его, но такой вариант мало чем отличается от варианта с событием

можно еще придумать кучу идиотских вариантов, только зачем?
в WF повсеместно используются события, делайте как все.
...
Рейтинг: 0 / 0
30.01.2019, 19:07
    #39767280
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать следующее событие?
Вы какой-то костыль из гамна и палок пытаетесь сделать. Событие, по своей сути, не предназначено для того, чтобы его райзить извне. По-православному надо добавить в контейнер метод, который райзит событие, и из контрола этот метод вызывать.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как вызвать следующее событие? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]