包含子控件的用户控件,设计模式编辑子控件

User control containing child control, design mode edit child control

我有一个控件,在该控件内有其他控件的集合(有点像选项卡控件 - 但不是选项卡控件)。

所以我可以控制表单。我可以使用自定义集合设计器表单添加新的子控件,没问题。

我希望能够在设计模式下从窗体视图向子控件添加控件。目前,如果我 select 子控件并放下一个复选框,该复选框将添加到父控件而不是子控件,然后位于所有子控件的顶部。

在设计模式下,如何使放置在子控件上的控件实际添加到子控件而不是父控件?它是需要添加到某物的属性吗?我是否必须在其中添加一些自定义代码来捕获正在添加的控件?

首先使内部控件设计器的行为像父控件一样:

[Designer(typeof(ParentControlDesigner))]
public partial class InnerControl : UserControl

然后通过为外部控件创建一个新的控件设计器来启用内部控件托管在外部控件中时的设计模式:

[Designer(typeof(OuterControlDesigner))]
public partial class OuterControl : UserControl
{
    public OuterControl()
    {
        InitializeComponent();
    }
    public InnerControl InnerControl { get { return innerControl1; } }
}

public class OuterControlDesigner:ControlDesigner
{
    public override void Initialize(IComponent component)
    {
        base.Initialize(component);
        this.EnableDesignMode(((OuterControl)this.Control).InnerControl, "InnerControl");
    }
}