2010-03-05 2 views
2

3 개의 패널이있는 UserControl을 만들었습니다.사용자 정의 컨트롤의 패널에 컨트롤을 드롭하는 방법은 무엇입니까?

내가해야할 일은 패널 중 하나를 Visual Studio 디자이너에 노출시켜 해당 패널 안에 컨트롤을 놓을 수 있도록하는 것입니다.

현재 양식에 UserControl이 있지만 그 위에 텍스트 상자가 UserControl 위에 텍스트 상자 페인트가 있고 사용자 정의 컨트롤의 일부가 아니라고 끌고 있다고 말합니다.

답변

2

중첩 된 패널을 디자인 할 수 있도록 수술이 필요합니다. 단계는이 blog post에 잘 설명되어 있습니다.

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에 대한 참조가 필요합니다.

+0

건배! 내가 찾은 대부분의 VB.Net 예제는 작동하는지 여부에 관계없이 테스트없이 직접 C# 변환으로 보입니다. 이 방법은 나를 위해 매력을 일한! –

관련 문제