2009-09-04 5 views
0

У меня есть пользовательский компонент, содержащий список других компонентов.VS2008: Вложенные пользовательские компоненты во время разработки

Если я добавляю дочерний компонент в список, он отображается на том же уровне, что и родительский компонент в окне схемы документа.

Как я могу сделать его подэлементом родительского компонента? (Аналогично, например, TabPages, которые подразделы в TabControl)

Вот мой код:

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 

ответ

0

Я нашел решение, вот изменения в исходный код:

<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 
Смежные вопросы