如何将控件拖放到用户控件中的面板上?

时间:2010-03-05 01:10:53

标签: .net visual-studio winforms

我创建了一个包含3个面板的UserControl。

我要做的是将其中一个面板暴露给Visual Studio设计器,以便您可以放下该面板内的控件。

目前我在表单上有UserControl,但拖动说它上面的文本框会在UserControl上绘制文本框而不是用户控件的一部分。

2 个答案:

答案 0 :(得分:2)

需要手术才能使嵌套面板可设计。这些步骤在blog post中有详细解释。

答案 1 :(得分:2)

@nobugz答案中的博客文章很棒。认为以下vb示例可以帮助其他人。

正常创建用户控件。

在此示例中,控件名称为Horizo​​ntalCollapsiblePanel,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

在Horizo​​ntalCollapisblePanel类中创建一个类供设计人员使用。

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的引用。