2013-05-11 2 views
2

컨트롤 모음이있는 Windows Form이 있는데 제대로 작동합니다. 모든 컨트롤은 TableLayoutPanel에 포함되어 있습니다. 컨트롤베이스 크기에 따라 자동 크기 조절이 적용되고 Form은 패널에 따라 자동 크기 조정되므로 모든 플랫폼과 컴퓨터의 크기에 대해 걱정할 필요가 없습니다. 모든 것이 현재 크기에 따라 조정되어야하기 때문입니다. 구성 설정TabControl이 포함 된 폼 자동 크기 조정

예를 들어 어떻게 보이는지 간단한 예가 있습니다. 관련 코드는 다음과 같습니다 그것은 단지 하나 개의 탭은 많은 다른 사람을 amonst 수 있도록 지금이 전체 패널을 표시하고있는 TabControl 이내에 배치 할

//...code defining all the other Commands and .Add()'ing them to the Panel 
form.Controls.Add(Panel); 
form.AutoSize = true; 
form.FormBorderStyle = FormBorderStyle.FixedDialog; 
form.ShowDialog(); 

Example Dialog

. 다음과 같이 내가 이런 짓을 :

//...code defining all the other Commands and .Add()'ing them to the Panel 
TabControl tabControl = new TabControl(); 
tabControl.Dock = DockStyle.Fill; 
TabPage tabPage = new TabPage("C1"); 
tabPage.Controls.Add(Panel); 
tabControl.TabPages.Add(tabPage); 
form.Controls.Add(tabControl); 
form.AutoSize = true; 
form.FormBorderStyle = FormBorderStyle.FixedDialog; 
form.ShowDialog(); 

그래서 기본적으로 대신 FormPanel을 추가하는, 나는 Form에 추가됩니다 TabControl에 추가됩니다 TabPage에 추가합니다. 문서는 TabControlTabPage에 대한 AutoSize 속성이 전혀 관련성이 단순한 인프라가한다고 Results http://img51.imageshack.us/img51/685/5112013112725am.jpg

:에 그러나,이 발생합니다. 내가 찾은 대부분의 "솔루션"은 을 사용하는 것이 좋습니다. 이는 이제 TabControl이 훨씬 작은 부분 만 차지하는 대신 위의 폼을 채 웁니다. 그러나 양식 자체는 변경되지 않습니다.

나는 그것을를 Panel의 크기와 TabControl 만들기 '를 사용하여 s의 같은 크기 (또는 함수)를 생각했지만, 나는 Panel이 그려진 때 Size 매개 변수는 분명히에만 변경 것으로 나타났습니다, 컨트롤을 추가해도 전혀 변경되지 않으므로 Panel이 페인트를 칠한 다음 크기를 조정할 때까지 기다려야합니다. 더 나은 해결책이 있습니까?

UPDATE 앵커를 사용하고

Panel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; 
tabControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; 

단순히이 이어질 설정 :

http://img803.imageshack.us/img803/3453/5112013125710pm.jpg

+0

관련없는 의견 : GUI는 일종의 계획 도면 또는 다이어그램 디자이너 응용 프로그램 인 것 같습니다. 나는 현명한 UI 기술을 사용하여 winforms를 남겨 두는 것이 강력 함을 강력하게 제안합니다. ['Here'] (http://stackoverflow.com/a/15821573/643085)는 애니메이션, 마우스 끌기, 애니메이션 및 기타 매우 흥미로운 시각적 및 상호 작용 기능을 지원하는 WPF + MVVM에서 수행 된 것과 유사한 작업의 예입니다. –

+0

여기에있는 문제는 말할 것도없고 (이는 winforms의 해상도 독립성이 부족함) 새로운 기술에서는 절대 존재하지 않습니다. –

+0

그래, 나는 그 링크를 보았다. .. 그것은 매우 시원해 보인다. WPF 학습을 하루 종일 보내도록 해줘서 고맙습니다. 또한 ... 당신은 WPF에 대해 열정을 가지고 있습니다. – Wasabi

답변

2

을 대신, 왜 안 Anchoring을 활용 크기를 설정? PanelTabPage/TabControl으로 고정하면 TabControlForm과 동일합니다. 걱정할 필요가있는 크기는 Form입니다. 다른 모든 항목의 크기를 지정합니다.

+0

글쎄,'Panel'은 기본적으로 호스트 객체에 고정되어 있지 않습니까? 기본값은'.Anchor = Top | Left'와 나는 그것을 수정하지 않았다. 또한, 내 아이디어는 정반대로, Form의 내용이 (.Autosize를 통해) 자신의 크기를 결정하게하고, Form이 내용으로 자동 크기를 조정하게합니다. 서로 다른 크기의 글꼴 및 다른 모니터 나 다른 버전의 Windows에서 전체 양식의 걱정할 필요가 없습니다. – Wasabi

+0

모든 것이 고정되어 있습니다. 기본적으로 '왼쪽'입니다. 나의 제안 (나는 더 잘 발음하기위한 답을 편집 할 것이다)은 당신이'Top | 왼쪽 | 오른쪽 | 아래 '. 그것들을 모두'Form'의 크기로 잠그고 그 내용으로부터'Form'의 크기를 설정하는 것에 대해서만 걱정하십시오. – Adrian

+0

고마워요,하지만 이상하게도 실제로 상황이 악화되었습니다. 추가 : 'Panel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; ' 'tabControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;' 'TabControl'은'.Dock! = Fill'처럼 행동하고, 이제는 Form을 채우지도 않습니다. 그리고 실제로는 'TabControl'을'Panel '이있는 간단한'Form '처럼 멋지게 만드는 방법이 없다는 사실이 정말 실망 스럽습니다. 여기서는 아무 것도 생각하지 않아도됩니다. – Wasabi

-1

사용자 정의 컨트롤로 패널 디자이너의 .AutoScaleMode = None을 사용하십시오. 제 경우에는 TabControl-TabPage-myPage가 작동합니다.