代码之家  ›  专栏  ›  技术社区  ›  MysticEarth

控件的自定义设计器

  •  5
  • MysticEarth  · 技术社区  · 14 年前

    我有一个自定义类,它从SplitContainer派生:

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

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

    如何做到这一点?

    3 回复  |  直到 14 年前
        1
  •  9
  •   Community Dunja Lalic    7 年前

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

    MSDN有 a lengthy section 添加控件的设计时支持。它描述了 type converters extender providers designer serialization designer customization .

    其他资源

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

        2
  •  3
  •   Hans Passant    14 年前

    只有窗体和UserControl类具有允许您在设计时编辑其子控件的设计器。创建自己的设计器来给splitcontainer提供相同的行为并不完全简单,最重要的是因为它的文档记录很差,很难调试。您需要使用Reflector研究框架代码,以使其正确。

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

        3
  •  1
  •   Oded    14 年前

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

    参见 this (.NET 1.0) article on MSDN 更多细节。 Here 是2003年的另一篇文章。