我有一个控件,在该控件中还有其他控件的集合(有点像选项卡控件,但不是选项卡控件)。
所以我可以控制表单。我可以使用自定义集合设计器表单添加新的子控件,没问题。
我希望能够在设计模式下从窗体视图向子控件添加控件。目前,如果我选择子控件并放下一个复选框,该复选框将被添加到父控件而不是子控件中,然后位于所有子控件的顶部。
我如何使放置在子控件上的控件实际上被添加到子控件中,而不是在设计模式下是其父控件?它是需要添加到某些东西的属性吗?我是否必须在其中添加一些自定义代码以捕获要添加的控件?
首先使内部控件设计器的行为类似于父控件:
[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");
}
}