2009-09-04 7 views
0

J'ai un composant personnalisé, qui contient une liste d'autres composants.VS2008: composants personnalisés imbriqués dans la conception

Si j'ajoute un composant enfant à la liste, il apparaît au même niveau que le composant parent dans la fenêtre de plan du document.

Comment puis-je en faire un sous-élément du composant parent? (Tout comme par exemple TabPages qui sont sous-éléments d'un TabControl)

Voici mon code:

Public Class SomeComponent 
    Inherits Component 

    Public Sub New(ByVal cont As IContainer) 
     cont.Add(Me) 
    End Sub 

    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _ 
    <Editor("System.ComponentModel.Design.CollectionEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", GetType(UITypeEditor))> _ 
    Public ReadOnly Property Items() As List(Of SomeOtherComponent) 
     Get 
      If _items Is Nothing Then 
       _items = New List(Of SomeOtherComponent) 
      End If 
      Return _items 
     End Get 
    End Property 
    Private _items As List(Of SomeOtherComponent) = Nothing 

End Class 

Public Class SomeOtherComponent 
    Inherits Component 

    Public Sub New() 
    End Sub 

    Public Sub New(ByVal cont As IContainer) 
     cont.Add(Me) 
    End Sub 

    '... 

End Class 

Répondre

0

J'ai trouvé la solution, voici les modifications apportées au code d'origine:

<Designer(GetType(SomeComponentDesigner))> _ 
Public Class SomeComponent 
... 
End Class 

'this hides SomeOtherComponent from the component tray 
<DesignTimeVisible(False)> _ 
Public Class SomeOtherComponent 
... 
End Class 

Public Class SomeComponentDesigner 
    Inherits ComponentDesigner 

    Public Overrides ReadOnly Property AssociatedComponents() As System.Collections.ICollection 
     Get 
      If TypeOf (Me.Component) Is SomeComponent Then 
       Return DirectCast(Me.Component, SomeComponent).Items 
      Else 
       Return MyBase.AssociatedComponents 
      End If 
     End Get 
    End Property 

End Class 
Questions connexes