1

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

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

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

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

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

我想:

  • 在设计器中查看Child控件,以便我可以修改属性
  • 如果控件被删除,得到通知

这可能吗?


[编辑]谢谢大家的意见。我决定跳过设计师——我希望能快速拼凑出一些东西,但显然它需要的计划比我现在应该允许自己花的更多。

4

2 回答 2

1

我不能说我完全理解你想要做什么。

如果您正在处理在设计时放置在窗体上的 UserControl 的“子”控件如何用作容器,您可以将其他控件从工具箱拖放到该容器上:此 CodeProject Henry Minute 的文章可能会有所帮助:设计嵌套控件。例如:您有一个用户控件,其中有一个面板:用户控件的一个实例放置在表单上:在表单的设计时视图中:您希望能够将控件拖放到用户控件中的面板上并让它们成为 Panel 的子控件:Henry 的文章将向您展示如何做到这一点。

这来自 Microsoft:如何使用 Visual C# 使 UserControl 对象充当控件容器设计时

也许也可能有用,尽管您似乎已经完成了这一步。

于 2010-02-24T03:09:37.997 回答
1

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

于 2010-02-24T03:15:08.867 回答