WinForms设计器:添加控件并使其对设计器可见

时间:2010-02-24 00:29:23

标签: c# windows-forms-designer

我有一个带有自定义UI编辑器的WinForms用户控件Host。 通过该编辑器,可以将子控件(Child)添加到Host

(UI编辑器创建Child并设置Child.Parent = Host

通过Holder<Child>辅助类处理子级,该级别设置为Tag属性,例如Child。一个ListViewItem。

相应的代码 - 至少其中一些 - 被添加到表单中:Holder被创建,并设置为Tag,这也足以在运行时创建。

但是,Child对设计器不可见 - 它会显示,但无法选择,也不会出现在包含父窗体控件的下拉列表中。

我想:

  • 请参阅设计器中的{{1}}控件,以便我可以修改属性
  • 如果删除控件,则会收到通知

这可能吗?


[edit] 感谢大家的投入。我决定跳过设计师 - 我希望能快速地把事情放在一起,但显然它需要更多的计划,而不是我现在应该花费在它上面。

2 个答案:

答案 0 :(得分:1)

我不能说我完全理解你要做的事情。

如果您正在处理如何在设计时将“子”控件放置在窗体上的问题,可以将其作为容器运行,您可以在其中拖放工具箱中的其他控件:Henry Minute的这篇CodeProject文章可能会有所帮助:Designing Nested Controls。例如:你有一个带有Panel的UserControl:UserControl的一个实例放在Form上:在Form的设计时视图中:你希望能够在UserControl中将控件拖放到Panel上并让他们成为小组的儿童控制:亨利的文章将告诉你如何做到这一点。

来自Microsoft:How to make a UserControl object acts as a control container design-time by using Visual C#

也许也许有用,虽然看起来你已经完成了这一步。

答案 1 :(得分:1)

在主机类上使用this.Controls.Add(/*Instance of the child*/);。然后为主机的ControlRemoved事件(this.ControlRemoved += new ControlEventHandler(Host_ControlRemoved);)添加事件处理程序。