.net 如何使Visual Studio加载项设置控件';s设计器中的可见属性

.net 如何使Visual Studio加载项设置控件';s设计器中的可见属性,.net,vb.net,properties,visual-studio-addins,visible,.net,Vb.net,Properties,Visual Studio Addins,Visible,我已经编写了一个VisualStudio2008插件,它将控件添加到表单中。我希望其中一些控件的Visible属性设置为False,以便在运行时隐藏它们,因此我执行以下操作: If hiddenControls.Contains(.ColumnName) Then 'hiddenControls is TypeOf List(Of String) fieldControlAsControl.Visible = False 'TypeOf Control End If 这不管用。不仅控件

我已经编写了一个VisualStudio2008插件,它将控件添加到表单中。我希望其中一些控件的Visible属性设置为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()为布尔值
得到
返回MyBase.Visible
结束
设置(ByVal值为布尔值)
MyBase.Visible=value
端集
端属性

有人能帮我在我的加载项中强制序列化Visible属性吗?

我找到了一个相对较好的解决方法(“好”意味着它不会让人感觉很不流利)。我将以下代码添加到由我的加载项添加到表单的控件中:

<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
_
公共重载属性Visible()为布尔值
得到
返回MyBase.Visible
结束
设置(ByVal值为布尔值)
MyBase.Visible=value
端集
端属性
_
_
_
_
公共属性VisibleTruntime()为布尔值
得到
返回mvisibletruntime
结束
设置(ByVal值为布尔值)
mVisibleAtRunTime=值
如果不是设计模式,则
可见=值
如果结束
端集
端属性
然后,我让addin设置“VisibleAtRunTime”属性,而不是“Visible”属性