创建自定义winforms容器

时间:2013-05-24 12:34:48

标签: c# .net winforms containers

我想在winforms中创建一个与容器控件具有相同行为的控件。 我的意思是:在设计模式下,当我放下控件时,它会分组,就像组合框一样。

我正在创建的这个控件包含一些其他控件和一个GroupBox。 我需要的是:当控件在我的自定义控件上以设计模式下垂时,我只需将它放在嵌套的GroupBox中。

但是我无法弄清楚如何让我的控件在设计模式中对这种动作做出反应。

2 个答案:

答案 0 :(得分:11)

也许this就是你所需要的,我在CodeProject上找到了它:

  

设计嵌套控件:

     

本文演示了如何允许Control,它是一个孩子   另一个控件接受控件在设计时掉落到它上面   时间。它不是一篇大文章,代码方式也不多,而且   这可能不是“官方”或最佳方式。它呢,   但是,工作,并且只要我能够测试它就是稳定的。

答案 1 :(得分:6)

您需要向控件添加Designer attribute,并使用从ParentControlDesigner Class派生的类型(需要对System.Design.dll程序集的引用),如下所示:< / p>

[Designer(typeof(MyCustomControlDesigner1))]
public partial class CustomControl1 : Control
{
    public CustomControl1()
    {
        MyBox = new GroupBox();
        InitializeComponent();
        MyBox.Text = "hello world";
        Controls.Add(MyBox);
    }

    public GroupBox MyBox { get; private set; }
}

public class MyCustomControlDesigner1 : ParentControlDesigner
{
    // When a control is parented, tell the parent is the GroupBox, not the control itself
    protected override Control GetParentForComponent(IComponent component)
    {
        CustomControl1 cc = (CustomControl1)Control;
        return cc.MyBox;
    }
}