【问题标题】:Custom Designer for a Control控件的自定义设计器
【发布时间】:2010-02-09 13:37:13
【问题描述】:

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

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

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

如何做到这一点?

【问题讨论】:

    标签: c# winforms custom-controls designer


    【解决方案1】:

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

    MSDN 有a lengthy section 为您的控件添加设计时支持。它描述了从type converters 到extender providers 和designer serialization 到designer customization 的所有内容。

    其他资源

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 谢谢,但我似乎无法找到如何以及在此特定代码上添加哪些设计逻辑以及如何在设计器中完成创建/填充我的控件...
        猜你喜欢
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        相关资源
        最近更新 更多