WinForms에서 도킹 순서를 제어하는 ​​방법


81

제목에서 알 수 있듯이 항목이 내 컨트롤 맨 위에 도킹되는 순서를 제어하는 ​​방법을 찾고 있습니다.

나는 윈도우 폼 디자이너를 가지고 놀았고 RightClick->Order->SendToFront, 정확히 내가 원하는 일이기 때문에 그것이 무엇을하고 있는지 찾을 수없는 것 같습니다 . 제가 할 수있는 한, 컨트롤에 콘텐츠를 추가하면 최신 콘텐츠가 항상 맨 위에 있고 최신 콘텐츠가 맨 아래에 있고 가장 오래된 콘텐츠가 맨 위에 오기를 원합니다. 상단.

요약 : WinForms (C #)에서 컨트롤 측면에 도킹되는 순서를 쉽게 제어 할 수있는 방법이 있습니까?

편집 : 컨트롤을 추가 할 때 코드 뒤에서이 작업을 수행해야합니다. WinForm 디자이너의 기능을 사용할 수 없습니다.하지만 제가하려는 것은 WinForms 디자이너SendToBackSendToFront기능을 모방하는 것입니다.


감사합니다; 나는 프로그래밍 방식으로 도킹을 제어해야했고 그들의 순서가 도킹 방식을 제어한다는 사실조차 깨닫지 못했습니다.
Eagle-Eye

답변:


80

다음 방법을 사용하십시오.

myControl.SendToBack();
myControl.BringToFront();

2
나는 control.SendToFront()See를 찾고 있었는데 이제는 쉬웠다. 감사!
caesay

10
@Tommy : 일반적으로 컴퓨터 뒤에서 프로그래밍합니까? :)
Ashley Tate

6
디자인 창에서 마우스 오른쪽 버튼을 클릭합니다. sendToBack과 오른쪽을 다시 클릭하여 선택합니다 BringToFont
회색 늑대

이 방법은 양식 디자이너에서 도킹 컨트롤을 추가하는데도 적용됩니다. 상황에 맞는 메뉴를 사용하여 뒤로 전송 한 다음 앞으로 가져 와서 도킹 할 수 있으며 도킹 "체인"의 마지막 컨트롤이됩니다.
앤더스 린든

143

보기 → 다른 창 → 문서 개요로 이동합니다.

해당 창에서 컨트롤을 끌어 원하는대로 도킹되도록합니다.


정확한 창을 설명하는 데 사용할 수있는 단어가 무엇인지 궁금합니다. 결국 Google에 도착합니다. 감사합니다!
Coops

12
나는이 대답을해야한다고 생각
Xinchao

1
컨트롤이 동적으로 추가되면 작동하지 않습니다.
Wayne

디자인 타임에 내 문제를 쉽게 해결하십시오.
Hao Nguyen

1
8 년 후 ... 베스트 답변
soulshined jul.

12

말했듯이, 컨트롤 컬렉션에 추가 된 최신 컨트롤이 맨 위에 있습니다. 맨 아래에 새 컨트롤을 추가해야하는 경우 컨트롤 목록을 만들고 목록에 컨트롤을 추가하고 목록을 반전 한 다음 컨트롤 컬렉션에 목록을 추가하는 것이 좋습니다.

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());

6

제어 당신이 찾고있는 무엇을 달성하기 위해 두 가지 방법을 가지고 BringToFrontSendToBack.


4

컨트롤이 Controls 컬렉션에 추가되는 순서에 따라 도킹 순서가 결정됩니다.


컨트롤이 컬렉션에 추가 된 후 도킹 순서를 편집해야합니다
caesay

2
그런 다음 ControlCollection.SetChildIndex(control, index)방법을 찾으십시오.
Oliver Hanappi 2010

@Oliver Hanappi : 디자이너에서 할 수 있습니까? 코드없이?
user2366975

당신은 문서 개요 창에서 재정렬 컨트롤 (수 있어야 blogs.msdn.com/b/zainnab/archive/2010/11/30/... )
올리버 Hanappi

3

(다른 옵션을 표시하기 위해) : Visual Studio 2012 (이상) :

  1. 앞으로 (또는 뒤로) 이동하려는 컨트롤을 선택하십시오.
  2. 아래 표시된 버튼을 클릭합니다 (맨 앞으로 가져 오기 / 뒤로 보내기). 여기에 이미지 설명 입력

이렇게하면 컨트롤을 원하는 순서로 재배치 할 수 있습니다.


2

프로그래밍 방식으로이 작업을 수행 할 때이를 달성하는 매우 쉬운 방법이 있습니다.

containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list

-3

FlowLayoutPanel을 사용하면 원하는 작업을 정확하게 수행 할 수 있습니다.


1
이 게시물은 질문에 대한 답변이 아니며이 질문은 이미 관련 답변이있는 6 년 전입니다.
caesay
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.