我創建了一個擁有3個面板的UserControl。如何將控件放到用戶控件的面板上?
我該做什麼是將其中一個面板暴露給Visual Studio設計器,以便您可以在該面板中放置控件。
目前我有一個窗體上的用戶控件,但拖動說它上面的文本框將文本框畫在UserControl上,而不是用戶控件的一部分。
我創建了一個擁有3個面板的UserControl。如何將控件放到用戶控件的面板上?
我該做什麼是將其中一個面板暴露給Visual Studio設計器,以便您可以在該面板中放置控件。
目前我有一個窗體上的用戶控件,但拖動說它上面的文本框將文本框畫在UserControl上,而不是用戶控件的一部分。
需要進行手術以使嵌套面板可設計。這個步驟在這blog post很好解釋。
@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參考。
乾杯!我發現的大多數VB.Net示例似乎都是直接的C#轉換,如果工作與否都沒有測試。這種方式對我來說很有魅力! – 2011-10-19 11:36:15