Как я настраиваю Делегатов между своими классами?

Я работаю с небольшим количеством кода, который структурирован таким образом:

Форма A имеет пользовательские элементы управления B и G в нем. Пользовательский элемент управления B имеет Пользовательский элемент управления D в нем, и пользовательский элемент управления D имеет метод "обновления". Пользовательский элемент управления G имеет пользовательский элемент управления F в нем, и пользовательский элемент управления F должен назвать метод "обновления" в D.

1) За исключением реструктуризации кода (Это - унаследованный код, таким образом, это закрыто как опция), действительно ли делегаты являются лучшим способом пойти об обработке этой проблемы? В противном случае у Вас есть другое предложение?

2) У меня нет опыта с функциями делегата - там хорошая краткая информация или пример, который я мог использовать для адаптации к моему коду для достижения желаемой функциональности?

6
задан Raven Dreamer 14 July 2010 в 13:27
поделиться

2 ответа

Во-первых, F не должен ничего знать о D и его функции обновления. Добавьте событие для F, которое поднимается, когда это необходимо. Если форма A знает о F, подпишитесь на это событие из A. Если нет, сделайте аналогичное событие в G и подпишитесь на него в A. В обработчике события A вызовите Refresh напрямую, или вызовите метод B, который вызывает D.refresh.

Похоже, что мой ответ еще менее читабелен, чем ваш вопрос :) Он должен выглядеть так:

F поднимает событие -> G обрабатывает событие F и поднимает событие -> A обрабатывает событие G и вызывает метод B -> метод B вызывает D.refresh

4
ответ дан 17 December 2019 в 06:59
поделиться

О делегатах смотрите здесь : http://www.akadia.com/services/dotnet_delegates_and_events.html

Для событий вы должны убедиться, что вещи проходят в правильном порядке. В текущем сценарии, я предполагаю, что хорошим способом будет выставить событие из G, которое должно срабатывать, когда что-то в F меняется. И у нас будет обработчик, подписанный на это событие в B, который в конечном итоге вызовет обновление. Будет еще несколько событий и делегатов для передачи вызовов от родителя к ребенку и наоборот. Помните о концепции механического устройства: часть, которая ЗАПУСКАЕТ движение, является той, которая запускает (вызывает событие) для других. Когда другие части двигаются, они запускают другие связанные части... и в конечном итоге что-то вдалеке движется. Надеюсь, это поможет.

0
ответ дан 17 December 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: