我有一个带有自定义UI编辑器的WinForms用户控件Host
。
通过该编辑器,可以将子控件(Child
)添加到Host
。
(UI编辑器创建Child
并设置Child.Parent = Host
)
通过Holder<Child>
辅助类处理子级,该级别设置为Tag
属性,例如Child
。一个ListViewItem。
相应的代码 - 至少其中一些 - 被添加到表单中:Holder被创建,并设置为Tag,这也足以在运行时创建。
但是,Child对设计器不可见 - 它会显示,但无法选择,也不会出现在包含父窗体控件的下拉列表中。
我想:
这可能吗?
[edit] 感谢大家的投入。我决定跳过设计师 - 我希望能快速地把事情放在一起,但显然它需要更多的计划,而不是我现在应该花费在它上面。
答案 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);
)添加事件处理程序。