Формы Windows: добавление пользовательских событий между элементами управления, добавленными во время выполнения - PullRequest
0 голосов
/ 14 апреля 2011

Если у меня есть следующая форма:
Скриншот здесь

Форма имеет несколько пользовательских элементов управления (оранжевый), которые также содержат несколько пользовательских элементов управления (зеленый).

Мои вопросы:
1) Если я добавлю дополнительный «зеленый» пользовательский элемент управления в один из «оранжевых» пользовательских элементов управления, каков наилучший способ подключить этот новый «зеленый» пользовательский элемент управления к событию Button на главной форме (без «оранжевого») или «зеленый» пользовательский контроль, зная о главной форме)?
Я подумал, запустив событие из «оранжевого» пользовательского контроля в основную форму с «зеленым» пользовательским контролем в качестве параметра, а затем обработав разводку в главной форме.

2) Есть ли лучшие места для обработки этой проводки?

3) Если все «зеленые» пользовательские элементы управления должны подключаться к событию друг друга (например, если значение изменяется в одном из них, все остальные должны быть проинформированы), каков наилучший способ? Я думал о создании одноэлементного класса EventManager для этого?

Я действительно борюсь с комбинацией слабосвязанных пользовательских контролей и их подключением.

Надеюсь, мой вопрос ясен.

Спасибо заранее, Kevin

1 Ответ

0 голосов
/ 14 апреля 2011

Я так думаю об этом, любой элемент управления / класс должен отвечать за настройку себя и общедоступного интерфейса своих непосредственных потомков.Пользователь класса или элемента управления не должен знать своих родителей или внутренних знаний о его дочерних элементах.

Итак, в вашем примере оранжевые элементы управления должны подписаться на события зеленых элементов управления и действовать соответственно,возможно, поднятие своего собственного события для родителя и / или, возможно, влияние какого-либо поля на элемент управления «родной зеленый».Когда зеленые элементы управления добавляются и удаляются из оранжевого, оранжевый элемент управления отвечает за поддержание внутренней «проводки».Это верно независимо от того, происходило ли это в публичном или приватном методе на оранжевом, если хост способен сделать это через некоторую открытую коллекцию на оранжевом, логика для этого должна быть заключена в оранжевый.true, независимо от того, рассматриваем ли мы оранжевый, хост, зеленый или любой другой класс / элемент управления.

В плане кодирования вы захотите использовать += и -= с моделью подписчика Multicast Delegate \ Eventкогда элементы управления добавляются и удаляются.Обработчики будут закодированы соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...