티스토리 뷰



윈도우 폼(Windows Forms) 응용을 MDI(Multiple Document Interface) 형태로 만들면 하나의 윈도우 폼이 부모폼(Parent Form)이 되고 여러개의 자식폼을 내장하는 방식으로 편리한 창 관리, 예를 들어 타일 방식으로 창을 자동 배열하거나 연속 형태(Cascade)로 창을 간단하게 배열할 수 있습니다. 그런데 이런 형태의 창 배열을 사용하지 않고 부모폼의 작업 영역에 한번에 하나의 폼만을 표시하려고 하면 몇가지 설정이 필요합니다.


분명 자식폼으로 사용할 폼의 ControlBox 속성을 False로 설정했지만 위의 그림과 같이 자식폼이 부모 폼의 작업 영역에 꽉차도록 WindowState 속성을 Maximized로 설정하면 컨트롤 박스가 보이고 맙니다. 폼 클래스에 Dock 속성이 동작하면 Fill로 설정하면 좋겠지만 디자이너에는 해당 항목 조차 없습니다. 이런 경우에는 자식 폼의 속성에서 몇가지를 조정해주어야 합니다.


위의 그림에서 적색으로 표시한 폼의 속성을 설정해주고 창을 부모창에 꽉차게 한다고 WindowState 속성을 손대지 말고 "Normal" 상태로 확인합니다.

scr_child = new HMIOverview();
scr_child.MdiParent = this;
scr_child.Dock = DockStyle.Fill;
scr_child.Show();

부모폼에서 위의 코드와 같이 자식폼을 띄우기 전에 Dock 속성에 강제로 Fill 값을 설정하면 컨트롤박스도 보이지 않고 부모 폼의 작업 공간에 꽉차도록 자식 폼을 띄울 수 있습니다.


부모폼의 속성은 개발자의 의도에 따라 차이가 있겠지만 필자의 경우에는 부모폼에서도 컨트롤박스를 없애는 형태로 제작했습니다. 필자의 경우 컨트롤 박스 제거 외에 부모폼의 속성에서 추가 설정한 부분은 위의 그림과 같습니다.


댓글
댓글쓰기 폼
«   2022/12   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함