Сообщение в блоге в ответе @nobugz превосходно. Мысль следующий пример vb может помочь другим.
Создайте свой пользовательский элемент управления как обычно.
В этом примере имя элемента управления - HorizontalCollapsiblePanel, а ContentPanel - это панель, доступная для дизайнера.
Добавить атрибут конструктора в оператор класса.
<System.ComponentModel.Designer(GetType(HorizontalCollapsiblePanel.Designer))> _
Public Class HorizontalCollapsiblePanel
Создайте свойство только для чтения для панели, которая будет открыта.
<System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)> _
Public ReadOnly Property Content() As Panel
Get
Return Me.ContentPanel
End Get
End Property
Создайте класс в классе HorizontalCollapisblePanel для использования дизайнером.
Public Class Designer
Inherits System.Windows.Forms.Design.ControlDesigner
Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent)
MyBase.Initialize(component)
EnableDesignMode(DirectCast(component, HorizontalCollapsiblePanel).Content, "Content")
End Sub
End Class
Обратите внимание, что System.Windows.Forms.Design.ControlDesigner требует ссылки на System.Design.dll.