2012-03-23 5 views
1

컨트롤 크기를 조정할 때마다 AutoScrollMinSize를 업데이트하는 함수를 사용하는 사용자 지정 UserControl이 있습니다. 이 컨트롤은 DockStyle로 설정됩니다. 다른 컨트롤과 함께 부모 폼 내부에 채 웁니다.AutoScrollMinSize 폼에서 글리치 최소화/최대화

내 문제는 컨테이너 형식을 최소화하거나 최대화 할 때 두 개의 연속 된 크기 조정 이벤트를 보내고 어떤 이유로 스크롤 막대가 사라진다는 것입니다.

양식 테두리의 크기를 조정하여 양식의 크기를 조정할 때마다 스크롤 막대가 매번 완벽하게 업데이트됩니다. 스크롤 막대가 사라지는 것을 최소화하거나 최대화 할 때만입니다.

OnResize 및 OnSizeChanged를 개별적으로 또는 모두 등록하려고 시도했지만 동일한 문제가 있습니다. 새로운 값이 현재 값과 같지 않은 경우에만 AutoScrollMinSize를 설정해 보았습니다 (동일한 값으로 두 번 설정하는 경우 약간의 결함이있는 경우에 대비해).하지만 여전히이 문제가 있습니다. 다음과 같이

내 컨트롤 스타일은 다음과 같습니다

this.SetStyle(ControlStyles.DoubleBuffer | 
       ControlStyles.AllPaintingInWmPaint | 
       ControlStyles.UserPaint | 
       ControlStyles.ResizeRedraw, true); 

this.DoubleBuffered = true; 
this.AutoScroll = true; 

답변

0

아니 완벽한 솔루션,하지만 난 AutoScrollMinSize을 설정 한 후() PerformLayout를 호출하면 보여 스크롤 막대를 강제 것을 발견했다.

AutoScrollMinSize = newSize; 
PerformLayout(); 
Invalidate(); 
관련 문제