控件的自定义设计器

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

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

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

怎么做到这一点?

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

MSDN有一个很长的部分 ,为您的控件添加设计时支持。 它描述了从类型转换器到扩展器提供程序和设计器序列化到设计器定制的所有内容 。

其他资源

CodeProject上的这篇文章包含有关为自定义控件创建设计器的信息。 这里还有一些有用的提示和其他StackOverflow问题 。

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

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

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

有关更多详细信息,请参阅MSDN上的此(.NET 1.0)文章 。 这是2003年的另一篇文章。