控件的自定义设计器

时间:2010-02-09 13:37:13

标签: c# winforms custom-controls designer

我有一个派生自SplitContainer的自定义类:

namespace Builder.Components
{
    public partial class ProjectSidebar : SplitContainer
    {
        public ProjectSidebar()
        {
            InitializeComponent();
        }
    }
}

现在,当我右键单击并选择 View Designer 时,我希望看到SplitContainer并对其进行编辑,就像我使用默认控件一样(在其中放置一个面板等)。 我看到的只是添加控件并切换到代码视图的消息。

如何实现这一目标?

3 个答案:

答案 0 :(得分:9)

为了添加设计时功能,如附加操作(根据提供的方式称为动作列表和动词),或者拖动视觉元素(如标题或拆分条),您需要实现自定义设计器(通常派生)来自ControlDesigner),允许Windows窗体设计师了解如何在设计时与自定义控件进行交互。

MSDN为您的控件添加了设计时支持a lengthy section。它描述了从type convertersextender providersdesigner serializationdesigner customization的所有内容。

其他资源

This article on CodeProject包含有关为自定义控件创建设计器的信息。还有一些有用的提示herethis other StackOverflow question

答案 1 :(得分:3)

只有Form和UserControl类具有允许您在设计时编辑其子控件的设计器。创建自己的设计器以使SplitContainer具有相同的行为并不是非常简单,最重要的是因为它的文档记录很差且难以调试。您需要使用Reflector学习框架代码以使其正确。

解决这个问题,将SplitContainer放在用户控件中。将其Dock属性设置为Fill。现在很容易。

答案 2 :(得分:1)

编写控件时,需要确保为其添加设计时逻辑。

有关详细信息,请参阅this (.NET 1.0) article on MSDNHere是2003年的另一篇文章。