2011-02-17 4 views
3

flowLayoutPanel을 사용하여 상대 위치 컨트롤을 사용하고 있습니다. flowLayoutPanel 안에 컨트롤의 위치를 ​​변경하고 싶습니다. 내가 위치를 말하면 control2 나 그 전에 뭔가 의미가 없다 - 나는 2 개의 컨트롤이 있다면 labelcomboBox - comboBox의 높이가 21이고, label의 높이가 13이고 flowLayoutPanel 높이도 21입니다. flowLayoutPanel - ((21-13)/2)의 수직 가운데에 label을 맨 위로부터 넣으려고합니다. 나는 일반적인 해결책을 원하고있는 수직적 인 중간에 특정한 것을 원하지 않는다.FlowLayoutPanel 내의 컨트롤 위치를 변경하십시오.

답변

3

당신은 또한 (containerHeight-labelHeight) 나는 tableLayoutPanel 내부 통제의 위치를 ​​설정할 수 있습니다 정확히 어떻게/2

+0

매력처럼 작용하여 여백 속성을 잊어 버렸습니다. – Ron

+0

누가 다 남자? 너 다 남자! 이것은 훌륭하게 작동했습니다. 이 작업을하는 다른 사람은 여백을 변수에 복사하고 수정 한 다음 다시 설정해야합니다. –

1

흐름 레이아웃은 도움이되지 않습니다. 모든 컨트롤을 목록에 정렬하고 패널에 맞게 위치를 조정합니다. 흐름 레이아웃 내의 테이블에 컨트롤을 배치하거나 테이블을 최대한 활용하여 하위 그룹을 만들 수 있습니다.

+0

에 라벨의 상단 여백을 설정할 수 있습니다? – Ron

+0

TableLayoutPanel을 사용하는 아이디어를 좋아합니다. 열/행의 크기를 설정하여 제어 위치와 치수를 설정할 수 있습니다. 전체 GUI의 경우 모든 것을 FlowLayoutPanel에 배치하는 것보다 조금 더 계획을 세우지 만, 그만한 가치가 있다고 생각합니다. –

+0

오른쪽 - 각 셀 내에서 항상 컨트롤을 도킹 할 수 있습니다. – Marco

0
int cIndex = this.FlowLayoutPanel1.Controls.GetChildIndex(Button1); 
    int bIndex = this.FlowLayoutPanel1.Controls.GetChildIndex(Button1); 

    this.FlowLayoutPanel1.Controls.SetChildIndex(Button1, bIndex); 
    this.FlowLayoutPanel1.Controls.SetChildIndex(Button2, cIndex);