我创建了一个包含3个面板的UserControl。
我要做的是将其中一个面板暴露给Visual Studio设计器,以便您可以放下该面板内的控件。
目前我在表单上有UserControl,但拖动说它上面的文本框会在UserControl上绘制文本框而不是用户控件的一部分。
答案 0 :(得分:2)
需要手术才能使嵌套面板可设计。这些步骤在blog post中有详细解释。
答案 1 :(得分:2)
@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的引用。