2013-10-17 2 views
1

탭 컨트롤이있는 폼이 있습니다.Winforms를 사용하여 C#에서 개별적으로 및 프로그래밍 방식으로 탭 크기 조정

필요에 따라 버튼 레이아웃을 가질 수 있도록 각 탭마다 자체 크기의 인터페이스가 필요합니다.

나는이 예에서는 높이 만 변경합니다.

현재 기본 양식 높이 및 기본 탭 높이가 설정되어 있습니다 (탭 인덱스 0으로 설정).

각 탭의 높이를 개별적으로 설정하는 프로그래밍 방식이 필요하며 이벤트 selectedIndexChanged에서 필요에 따라 현재 선택된 탭에 상대적으로 폼의 크기를 조정할 수 있지만 각 탭의 높이를 개별적으로 변경하는 방법을 모르겠습니다. .

어떻게하면됩니까?

+0

'TabControl'에서 클래스를 상속 받아 직접 가져 오거나 높이를 제어하십시오. – DonBoitnott

+0

죄송합니다. 나는 이것이 당신이 의미하는 바를 이해하지 못합니다. 어쩌면 내가 C#을 처음 사용한다고 말했고 사용중인 키워드 중 일부는 아직 익숙하지 않은 것 같습니다. – jwarner112

+1

'TabControl'은 높이를 임의로 설정할 수는 없다는 것을 기억합니다. 즉, System.Windows.Forms.TabControl'에서 파생 된 클래스를 만들어야하고 그 안에 height 속성을 재정 의하여 제어 할 수 있습니다 (원하는 모든 작업을 수행 할 수 있는지 확실하지 않음). 탭의 전체 도면을 덮어 씁니다. 이것은 사소하지 않습니다. – DonBoitnott

답변

1

각 탭 항목의 높이보다 선택한 탭을 기준으로 양식의 높이에 대해 더 많이 이야기하는 것처럼 들립니다.

void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { 
    var controls = tabControl1.SelectedTab.Controls.Cast<Control>(); 
    if (controls.Any()) { 
    this.Height = controls.Max(x => x.Bottom) + 72; 
    } 
} 

이 루틴은에 가장 낮은 기반 컨트롤을 찾아 다음을 TabControl 가정

는 부모 폼에 독-가득, 당신은 TabPage의 내용에 따라 폼의 높이의 크기를 조정하려면이 코드를 시도 할 수 있습니다 TabPage를 누른 다음 서식의 비 클라이언트 영역 및 기타 기타 간격 문제의 높이를 설명하기 위해 퍼지 번호 72를 추가합니다.

그러나 탭 선택에 따라 양식의 높이를 계속 변경하면 최종 사용자에게 약간의 불편을 초래할 수 있으며 일반적으로 인기있는 UX 구현으로 간주되지 않을 수 있습니다.

+0

나는 이것을 기억한다. 나는 가장 낮은 컨트롤의 높이로 조정하는 지점까지 일정한 오프셋을 갖는 형식을가집니다. 다음 단계는 각 탭을 개별 크기로 만들어서 다른 페이지가 변경 될 때 변경 될 수 있도록하는 것이 었습니다. 나는 당신이 옳은 것처럼이 노력을 포기했습니다. 이것은 구현 될 때 아주 잘 작동하지 않을 것입니다. – jwarner112