Дизайнер WinForms: добавьте элемент управления и сделайте его видимым для дизайнера - PullRequest
1 голос
/ 24 февраля 2010

У меня есть пользовательский элемент управления WinForms Host с пользовательским редактором пользовательского интерфейса. С помощью этого редактора дочерний элемент управления (Child) можно добавить к Host.

(редактор пользовательского интерфейса создает Child и устанавливает Child.Parent = Host)

Дочерний объект обрабатывается с помощью вспомогательного класса Holder<Child>, который устанавливается как свойство Tag, например, a ListViewItem.

Соответствующий код - по крайней мере, его часть - добавляется в форму: Holder создается и устанавливается как Tag, что также достаточно для создания во время выполнения.

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

Я бы хотел:

  • см. Элемент управления Child в конструкторе, чтобы я мог изменять свойства
  • получать уведомление, если элемент управления удален

Возможно ли это?


[править] Спасибо всем за ваш вклад. Я решил пропустить дизайнера - я надеялся собрать что-то быстро, но, очевидно, это требует больше планирования, чем я должен позволить себе потратить на это прямо сейчас.

Ответы [ 2 ]

1 голос
/ 24 февраля 2010

Используйте this.Controls.Add(/*Instance of the child*/); в классе хоста. Затем для уведомления добавьте обработчик события для события ControlRemoved хоста (this.ControlRemoved += new ControlEventHandler(Host_ControlRemoved);).

1 голос
/ 24 февраля 2010

Не могу сказать, что полностью понимаю, что вы пытаетесь сделать.

Если вы имеете дело с проблемой того, как «дочерний» элемент управления UserControl, помещенный в форму во время разработки, может функционировать как контейнер, в который можно перетаскивать другие элементы управления из панели инструментов : эта статья CodeProject Генри Минута может быть полезна: Разработка вложенных элементов управления . Например: у вас есть UserControl с панелью внутри него: экземпляр UserControl помещается в форму: в представлении формы во время разработки: вы хотите иметь возможность перетаскивать элементы управления на панель в UserControl и пусть они станут дочерними элементами управления Panel: статья Генри покажет вам, как это сделать.

Это от Microsoft: Как заставить объект UserControl действовать как время разработки контейнера элемента управления с помощью Visual C #

Возможно, это также может быть полезно, хотя кажется, что этот шаг уже выполнен.

...