본문 바로가기
Programing/C#

[Dock 속성] Dock 속성 우선순위

by june._.note 2018. 5. 31.

Window Form을 이용한 프로젝트에서 UI를 꾸밀때 자주 사용하는 속성 중 하나가 Dock속성임.

 

Dock속성을통해 화면을 이쁘게 나누고싶어서 메뉴를 보여줄 ControlLeft / 내용을 보여줄 ControlFill로 주어서

 

화면을 좌/우로 2등분을 하고 싶은데, 생각대로 2등분되지 않고 Fill속성을 준 객체가 Left속성을 준 객체뒤에 숨어버리는 일이 발생함.

 

그래서 차선책으로 Anchor 속성을 이용하지만, Anchor의 경우에는 Form의 크기를 변경하다보면 원하는위치에 있지않고 깨지는 현상이 발생함.

 

 

따라서 해당 내용에 대해 검색하다가 stackoverflow에서 아래와 같은 답변을 확인함.

(https://stackoverflow.com/questions/154543/panel-dock-fill-ignoring-other-panel-dock-setting?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa)

 

 

답변내용을 요약하자면, Document outline(View -> Other Windows -> Document outline)라는 윈도우에서 Control의 순서를 확인 할 수 있는데,

 

같은 Level에 순서상 가장 마지막에 있는 Control이 우선순위가 제일 높다는것.

 

 

즉 위의 예시에서 든 경우에는 Document outline에서 확인하면 아래와 같이 순서가 되어있다.

 

그래서 내용 Control의 Fill이라는 속성이 우선되어 전체를 차지하고있고, 메뉴 Control의 Left속성이 적용되어 차지할 공간이 없으니,

 

그냥 겹쳐셔 Left를 차지하게 되어 겹쳐보이는 현상이 발생하는 듯 함.

 

 

메뉴 Control (Left)

내용 Control (Fill)

 

 

따라서 위의 순서를 바꾸면, Left속성을 갖는 Control이 먼저 자릴 차지하고, 남은 공간을 내용 Control이 Fill 속성으로 차지하여

 

원하는 모양대로 2등분이 되는것을 확인 할 수 있음.

 

내용 Control (Fill)

메뉴 Control (Left)

 

 

끝.