2014-10-08 1 views
0

오늘 C#을 사용하여 패널에 여러 창 컨트롤을 순차적으로 맞추려고합니다. BringToFront()를 사용하여 스택 할 수 있도록 맨 위에 고정시키고 싶습니다.winforms 도킹 및 고정 동작의 조합

그러나 나는 또한 그 (것)들을 중심에두고 싶습니다. 현재는 도킹 동작으로 컨트롤이 화면 왼쪽으로 이동합니다 (그러나 위치 속성의 크기를 변경하고 위치 속성을 많이 변경 함).

그런 다음 컨트롤을 패널 위쪽에 고정하려고했습니다. 이 컨트롤을 중앙에 배치 할 수 및 또한 그들을 크기를 조정할 수 있지만 고정 스태킹 동작이 있으며 각 컨트롤을 이전 컨트롤을 덮어 씁니다.

나는 이것을 광범위하게 연구 해 왔으며이 질문에 대한 답변을 찾지 못했습니다. 이 속성 중 하나 또는 모두를 사용하여 컨트롤을 패널 중앙에 쌓을 수 있습니까?

내 코드는 현재도록 약자

//Docking 
userControl.Dock = DockStyle.Top; 
userControl.Width = 633; 
userControl.Left = (pnlRules.Width - userControl.Width)/2; //doesn't work 
Point location = new Point(((pnlRules.Width - userControl.Width)/2), 0); 
userControl.Location = location; //doesn't work 
userControl.BringToFront(); 

OR

내 출력하거나 아름답게 조정할 왼쪽 패널 에지 (도킹) 또는 중첩 제어 바인딩 컨트롤을 적층 중심이되는 (
//Anchoring 
userControl.Anchor = AnchorStyles.Top; 
Point location = new Point(((pnlRules.Width - userControl.Width)/2), 0); 
userControl.Location = location; 
userControl.BringToFront(); //doesn't work 

정박)

감사합니다 :) 아냐

편집 : 이 아주 잘 내 문제의 캡션 : 는 http://www.techrepublic.com/article/manage-winform-controls-using-the-anchor-and-dock-properties/

이 도킹을 사용하여, 컨트롤이 서로 옆에 적재 될 수 있음을 설명한다. 도킹 된 누적 컨트롤이 패널의 왼쪽 가장자리에 바인딩되지 않도록하고 싶습니다.

+0

체크 ['TableLayoutPanel' (http://msdn.microsoft.com/en-us/library/system.windows. forms.tablelayoutpanel.aspx), 레이아웃 주문이 있습니다. 'BringToFront()'에 관해서는, 뒤에서 뭔가를 드러내지 않고 보이지 않게 ('Visible = false') 가질 수 있고 적절히 배치 될 수 있습니다. – Sinatr

+0

당신이하려는 것을 명확히하지 않습니다. * BringToFront * 컨트롤을 누른 다음 위에 컨트롤을 추가하면 보이지 않습니다. –

+0

현재 BringToFront()를 사용하여 내 컨트롤의 z- 순서를 설정하고 있습니다. 컨트롤 목록으로 페이지의 모든 컨트롤을 표시 할 수 있습니다. 한 번에 하나씩 컨트롤을 추가하고 기존 목록의 끝에 추가해야합니다. –

답변

0

도킹과 고정을 조합하여 사용할 방법이 없습니다. TableLayoutPanel이 여기에서 효과가 있었지만 간단한 Panel에 묶여있었습니다.

수정

센터로 제어 강제로 패딩을 사용 하였다 :

userControl.Dock = DockStyle.Top; 
pnlParent.Padding = new Padding((pnlParent.Width - userControl.Width)/2, 0, 0, 0); 
userControl.BringToFront();