【问题标题】:How to make a Visual Studio addin set a control's Visible property in the designer如何让 Visual Studio 插件在设计器中设置控件的 Visible 属性
【发布时间】:2011-09-16 20:55:22
【问题描述】:

我编写了一个 Visual Studio 2008 插件,可将控件添加到窗体。我希望将其中一些控件的 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 属性在我的插件中序列化?

【问题讨论】:

    标签: .net vb.net properties visual-studio-addins visible


    【解决方案1】:

    我找到了一个相对较好的解决方法(“好”的意思是它不会让人觉得很无语)。我将以下代码添加到由我的插件添加到表单的控件中:

    <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”属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多