2011-09-29 6 views
1

많은 탭이있는 TabControl이 하나만있는 양식이 있습니다. 각 탭에는 사각형 버튼 만 나란히 있습니다. 사용자가 탭을 클릭하면 양식이 특정 탭의 모든 단추 또는 모든 탭을 볼 수있는 크기 중 큰 것을 볼 수있는 크기로 자체 크기가 조정되도록하려고합니다.WinForms TabControl에서 TabPage의 경계를 가져 오는 방법이 있습니까?

탭 페이지의 마지막 컨트롤 위치를 쿼리하는 방법이 있는지 궁금합니다. 그래서 저는 다음과 같이 할 수 있습니다 :

tabForm.Width = currentTabPage.UsedContentBorder + 10; 

아니면 모든 컨트롤과 그 사이의 크기 등을 추가해야합니까?

+0

"마지막 컨트롤"이 없으며 컨트롤에는 Z 순서 만 있습니다. –

+0

Hans, 최소 또는 최대 Z 순서로 컨트롤을 찾는 방법을 알려주시겠습니까? 왼쪽에서 오른쪽으로 단추를 추가합니다. –

+0

나는 너를 전혀 도울 수는 없다. –

답변

2

특정 탭의 모든 컨트롤의 최대 좌표를 찾고 싶습니까? LINQ와 쉬운 :

이제
int right = tab.Controls.Cast<Control>().Max(c => c.Right); 
int bottom = tab.Controls.Cast<Control>().Max(c => c.Bottom); 

가 제대로 폼의 크기를 선택하기 위해, 나는 이런 식으로 뭔가를 생각 것입니다 ... 그냥 폼이 TabPages보다 얼마나 더 큰 파악해야 상상 :

int extraWidth = form.Width - tabControl.SelectedTab.Width; 
int extraHeight = form.Height - tabControl.SelectedTab.Height; 

은 그럼 그냥

form.Size = new Size(right + extraWidth, bottom + extraHeight); 

은 (는 Anchor 속성이 네면에 설정되어있는 경우 TabControl에 자동으로 크기가 조절됩니다.) 할이 오작동 할 수 있다는 것을 나에게 발생 사용자가 매우 작은 폼의 크기를 조정하면 FormWindow에서 extraWidth 및 extraHeight를 계산 한 다음 나중에 필요할 때 해당 값을 저장하여 보완 할 수 있습니다.

+0

고마워, 지금 이걸 시도 할께. Btw는 탭 크기가 더 큰 경우 전체 탭을 의미했습니다. 탭 2에 2 개의 버튼이 있다고 말하면 다른 탭을 축소 된 크기로 숨기고 싶지 않고 마지막 탭 크기로 멈추기 때문입니다. 위치, 서식 크기 –

관련 문제