2011-09-16 63 views
0

我已经编写了一个将控件添加到窗体的Visual Studio 2008插件。我想其中的一些控件的Visible属性设置为false,以便他们在运行时隐藏的,所以我这样做:如何使Visual Studio插件在设计器中设置控件的Visible属性

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

我发现了一个比较好的解决方法('好',这意味着它不觉得非常不合适)。我下面的代码添加到该得到的我的插件添加到窗体控件:

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

相关问题