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

问题描述 投票:2回答:1

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

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

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

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

c# .net winforms windows-forms-designer designer
1个回答
3
投票

首先使内部控件设计器的行为类似于父控件:

[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");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.