2009-04-16 6 views
4

В нашей среде IDE, например Visual Studio, если мы отображаем свойства элемента управления System.Windows.Forms.Button, мы видим некоторые свойства, которые выставляют набор свойств анотера. Например: FlatAppearance, Font, Location, Margin и т. Д.Свойства группы в пользовательском элементе управления

Я хотел бы сделать что-то подобное в пользовательском элементе управления.

Я знаю, что код за неправильно, но вот пример того, что я пытаюсь сделать:

Public Class StateOfMyCustomControl 

    Public Enum EnumVisibility 
     Visible 
     NonVisible 
    End Enum 

    Public Enum EnumEventManagement 
     Automatic 
     Manual 
    End Enum 

    Private mAssociatedControl As MyCustomControl 
    Private mVisibility As EnumVisibility 
    Private mEventManagement As EnumEventManagement 

    Public Sub New(ByVal AssociatedControl As MyCustomControl) 
     mAssociatedControl = AssociatedControl 
    End Sub 

    Public Property Visibility() As EnumVisibility 
     Get 
      Return mVisibility 
     End Get 
     Set(ByVal value As EnumVisibility) 

      mVisibility = value 

      mAssociatedControl.Visible = False 
      If mVisibility = EnumVisibility.Visible Then 
       mAssociatedControl.Visible = True 
      End If 

     End Set 
    End Property 

    Public Property EventManagement() As EnumEventManagement 
     Get 
      Return mEventManagement 
     End Get 
     Set(ByVal value As EnumEventManagement) 
      mEventManagement = value 
     End Set 
    End Property 

End Class 

Public Class MyCustomControl 

    ' ... 

    Private mState As StateOfMyCustomControl 

    Public Sub New() 
     mState = New StateOfMyCustomControl(Me) 
    End Sub 

    Public Property State() As StateOfMyCustomControl 
     Get 
      Return mState 
     End Get 
     Set(ByVal value As StateOfMyCustomControl) 
      mState = value 
     End Set 
    End Property 

    ' ... 

End Class 

В моем IDE, в окне свойств моего пользовательского элемента управления, я бы хотел бы видеть мое имущество Состояние, с возможностью его отображения, чтобы установить его свойства Видимость и EventManagement.

Большое спасибо

ответ

3

Вы должны сказать ему, чтобы использовать ExpandableObjectConverter (или пользовательский конвертер) для StateOfMyCustomControl. В C# это:

[TypeConverter(typeof(ExpandableObjectConverter))] 
public class StateOfMyCustomControl {...} 

Однако применить атрибуты в VB, сделать это ;-p

Возможно:

<TypeConverter(GetType(ExpandableObjectConverter))> _ 
Public Class StateOfMyCustomControl 
... 
+0

Привет Марк, I've импортирован System.ComponentModel пространство имен для использования Атрибут TypeConverter. Я доказал это и отлично работает. Огромное спасибо! – Javier

Смежные вопросы