2011-09-16 6 views
0

フォームにコントロールを追加するVisual Studio 2008アドインを作成しました。私は、彼らが実行時に隠されているので、Falseに設定し、それらのコントロールのVisibleプロパティのいくつかをしたいので、私はこれを行う: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」プロパティを設定しています。

関連する問題