User control containing child control, deisgn mode edit child control

此生再无相见时 提交于 2020-02-24 12:28:05

问题


I have a control, within that control there is a collection of other controls (a bit like a tab control - but not a tab control).

So I have my control on a form. I can add new child controls using a custom collection designer form, no problem.

I would like to be able to add controls to the child control in design mode from the form view. At present if I select the child control and drop say, a checkbox, the checkbox gets added to the parent control not the child control and then sits over the top of all child controls.

How do I make controls that have been dropped over the child control actually get added to the child control and not it's parent in design mode? Is it an attribute that needs adding to something? Do I have to add some custom code in there to trap the control being added?


回答1:


First enable the inner control designer to behave like a parent control:

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

Then enable design mode for inner control when it's hosted in outer control, by creating a new control designer for outer control:

[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");
    }
}


来源:https://stackoverflow.com/questions/39925165/user-control-containing-child-control-deisgn-mode-edit-child-control

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!