Panel
에서 파생 된 사용자 지정 컨트롤이 있습니다.디자이너에서 그림자 속성을 설정하지 않았습니다.
내가 (컨트롤이 기본적으로 윈폼의 확장이다)을 조정해야하기 때문에이 크기 속성을 미행하고 다음으로 IsExpanded 속성에 따라 값
Private DesiredSize As Size
Public Shadows Property Size As Size
Get
Return DesiredSize
End Get
Set(value As Size)
DesiredSize = value
AdjustHeight()
End Set
End Property
AdjustHeight()
더 많거나 적은 세트의 기본 크기
Public Property CollapsedWidth As Integer
Private Sub AdjustHeight()
If IsExpanded Then
MyBase.Size = DesiredSize
Else
Dim newh As Integer = 15
Dim neww As Integer
If CollapsedWidth > 0 Then
neww = CollapsedWidth
Else
neww = DesiredSize.Width
End If
MyBase.Size = New Size(neww, newh)
End If
End Sub
생성자에서 DesiredSize = MyBase.Size
으로 DesiredSize를 초기화합니다.
잘 작동하지만 Visual Studio Designer에 문제가 있습니다. 컨트롤의 크기를 조정할 때마다 Size 속성이 업데이트되지 않습니다. 디자인 타임에 폼에 대한 컨트롤은 크기가 조정되지만 일단 어플리케이션을 시작하면 디자인 타임뿐만 아니라 런타임에 초기 크기로 되돌아갑니다.
Designer에서 Size 속성을 실제로 처리하는 방법은 무엇입니까? 크기 속성을 적용하기 위해 Shadows 속성에 어떤 종류의 속성을 추가해야 할 필요가 있을까요?
VB.NET과 C# 모두에 대한 답변이 매우 만족 스럽습니다.
편집 : 나는 그것이 이와 같은 경우에 도움이 될 수 있지만, 내가 경험하고있는 행동에 대해 아무 것도 변경하지 않는 것을 읽을 수 있기 때문에 나는 재산에 <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
태그를 추가하는 시도
.
편집 2 :
나는 다른 경로를 복용하고 크기 속성을 그림자 피함으로써 문제를 해결. 그러나 나는 질문을 공개적으로 남겨 둘 것이다. 왜냐하면 위에 게시 된 접근법이 가능할지를 여전히 알고 싶기 때문이다. 이 모든 것을 치료한다으로
속성을 섀도 잉하는 대신 SizeChanged 이벤트를 처리하는 것이 더 쉽습니다. –