2011-09-16 2 views
0

컨트롤을 폼에 추가하는 Visual Studio 2008 추가 기능을 작성했습니다. 나는 그들이 런타임 중에 숨겨져있는, 그래서 False로 설정하는 컨트롤 'Visible 속성의 일부를 원하는, 그래서 나는이 작업을 수행 :Visual Studio addin을 디자이너에서 컨트롤의 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"속성을 설정했습니다.

관련 문제