Свойства группы в пользовательском элементе управления - PullRequest
4 голосов
/ 16 апреля 2009

В нашей 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 .

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

1 Ответ

3 голосов
/ 16 апреля 2009

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

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

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

Возможно:

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