Как поместить элементы управления на панель в пользовательском элементе управления? - PullRequest
2 голосов
/ 05 марта 2010

Я создал UserControl, который имеет 3 панели.

Что мне нужно сделать, так это открыть одну из панелей для дизайнера Visual Studio, чтобы вы могли отбрасывать элементы управления внутри этой панели.

В настоящее время у меня есть пользовательский элемент управления на форме, но при перетаскивании, скажем, над текстовым полем текстовое поле будет закрашено над пользовательским элементом управления и не будет частью пользовательского элемента управления.

Ответы [ 2 ]

2 голосов
/ 05 марта 2010

Сообщение в блоге в ответе @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.

2 голосов
/ 05 марта 2010

Операция требуется, чтобы сделать вложенную панель проектируемой. Шаги хорошо объяснены в этом блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...