2009-08-03 1 views
15

Windows Forms 응용 프로그램 (.NET 2.0, VS 2005)을 개발 중입니다. 기본적으로 양식으로 동적으로 조정되는 패널이 포함 된 양식이 있습니다.포함 된 컨트롤이 너무 큰 경우 스크롤 막대를 크기를 조정할 수있는 패널에 표시하는 방법?

this.panel1.Dock=DockStyle.Fill; 

이 패널은 컨테이너로 사용됩니다. 런타임시, 사용자 지정 컨트롤이 추가됩니다 :

:이 사용자 정의 컨트롤이 최소 크기 요구 사항이

UserControl uc=new UserControl(); 
panel1.Controls.Add(uc); 
uc.Dock=DockStyle.Fill; 

, 나는 전체 제어를 보여주기 위해 너무 작은 얻는 경우에 포함하는 패널에 표시하는 스크롤 바를 원하는

this.panel1.AutoScroll=true; 

이것은 작동하지 않습니다. Dock 속성보다는 Anchor 속성을 사용하여 패널의 크기를 조정하려고했지만 아무 소용이 없습니다.

답변

24

사용자 컨트롤을 고정하지 마십시오. Anchor 속성을 대신 사용하십시오. (4면 모두 앵커). 설정하면 사용자 컨트롤의 MinimumSize 속성 당신은 그것의 AutoScrollMinSize 속성을 설정하지 않으면 나타나지 않습니다

패널의 스크롤 패널의 AutoScrollMinSize 속성

을 설정합니다. 사용자 정의 컨트롤의 Dock을 채우기로 설정하면 패널의 스크롤 막대를 숨기는 것처럼 보입니다.

+10

AutoScrollMinSize가 설정되어있는 한 Dock 속성은 패널과 사용자 정의 컨트롤 모두에 적합합니다 (http://social.msdn.microsoft.com/Forums/). en-US/winforms/thread/56267eb1-25af-4df2-82a3-0498563c7eef). – Mac

+0

앵커 고정은 도킹과 동일하지 않습니다. 예를 들어 도킹 된 컨트롤을 보이지 않게 만들면 다음 컨트롤이 자동으로 다시 정렬됩니다. 정박은 당신에게이 능력을주지 않습니다. 도킹은 매우 유용하지만 OP와 마찬가지로 부모 AutoScroll 컨트롤로도 원하는대로 작동하지는 않습니다 - 도킹 된 컨트롤의 최소 크기를 설정하는 경우에도 – Gwynge

2

InitializeComponent를 대화 형식으로, 내가 이런 짓을하고 작동하는 것 같았다 후 :

tableLayoutPanel1.AutoScrollMinSize = tableLayoutPanel1.GetPreferredSize(new Size(1, 1)); 

나는 테이블에 서브 패널의 무리가 있습니다. 모든 행과 열이 자동 크기 조정으로 설정됩니다. 어떤 이유로 컨트롤이 충분히 똑똑하지 않아서 스크롤 컨트롤에 원하는 크기를 알려주지 않습니다.

1

Panel.AutoScroll = * True works - NOW! 패널과 사용자 컨트롤 모두 위의 아이디어를 가지고 노고 놀았고 마지막으로 모든 것을 기본값으로 다시 설정하고 패널에 자동 스크롤을 설정하고 ... voila! 어떻게 든 다시 작동 ... 그림 이동 ...

관련 문제