Как заставить надстройку Visual Studio установить свойство Visible элемента управления в конструкторе - PullRequest
0 голосов
/ 17 сентября 2011

Я написал надстройку для Visual Studio 2008, которая добавляет элементы управления в форму.Мне нужно, чтобы для свойства этих элементов управления было установлено значение False, чтобы они были скрыты во время выполнения, поэтому я делаю это:

If hiddenControls.Contains(.ColumnName) Then 'hiddenControls is TypeOf List(Of String)
    fieldControlAsControl.Visible = False 'TypeOf Control
End If

Это не работает.Мало того, что элемент управления невидим в самом окне конструктора, но код .Visible = False даже не превращает его в [FormName] .designer.vb.

Я пытался принудительно настроить сериализацию для свойства Visible, например:Итак, безрезультатно:

<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Public Shadows Property Visible() As Boolean
    Get
        Return MyBase.Visible
    End Get
    Set(ByVal value As Boolean)
        MyBase.Visible = value
    End Set
End Property

Может ли кто-нибудь помочь мне заставить сериализовать свойство Visible в моем дополнении?

1 Ответ

1 голос
/ 20 сентября 2011

Я нашел относительно хороший обходной путь («хороший», что означает, что он не очень неэффективен).Я добавил следующий код к элементам управления, которые добавляются в форму моим надстройкой:

<System.ComponentModel.Browsable(False)> _
Public Overloads Property Visible() As Boolean
    Get
        Return MyBase.Visible
    End Get
    Set(ByVal value As Boolean)
        MyBase.Visible = value
    End Set
End Property

<System.ComponentModel.Category("Appearance")> _
<System.ComponentModel.Description("Whether the FieldControl will be visible at runtime.")> _
<System.ComponentModel.DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
<System.ComponentModel.Browsable(True)> _
Public Property VisibleAtRunTime() As Boolean
    Get
        Return mVisibleAtRunTime
    End Get
    Set(ByVal value As Boolean)
        mVisibleAtRunTime = value
        If Not DesignMode Then
            Visible = value
        End If
    End Set
End Property

Затем у меня надстройка устанавливает свойство VisibleAtRunTime вместо свойства Visible.

...