MDI 자식폼 만들기 & 지우기 [출처] C# MDI 자식폼 만들기 & 지우기|작성자 Beautiful Kim

Posted by 나에요임마
2018. 3. 12. 20:19 Program/C#

MDI 란?

- Multiple Document Interface 의 약자로, 한개의 창에서 여러가지 작업을 할 수 있는 인터페이스를 뜻한다. 

가장 대표적인 예로 사진수정의 친구 '포토샵' 을 들 수 있다.

 

SDI 란?

- Single Document Interface 의 약자로, MDI 와는 반대되는 개념이라 할 수 있다. 한개의 창에서 한가지 작업밖에 할 수 없는 인터페이스를 뜻하기 때문이다. SDI의 가장 대표적인 예는 '메모장' 이 있다.

 

Visual Studio & MDI

-  Visual Studio (줄여서 VS) 를 실행시키면 (프로젝트 파일로 바로 실행 시키는 것 말고 프로그램만 실행시켰을 때) 제일 처음에 볼 수 있는 화면에 메뉴, 툴박스, 솔루션 익스플로러 등등 여러가지가 있지만 가장 큰 비율을 차지하고 있는 것이 'Start Page' 이다.

그리고 이 스타트페이지에서 최근 프로젝트나 새 프로젝트 만들기, 프로젝트 열기 등

어떠한 메뉴를 클릭하면 해당 페이지가 화면에 뜨게 된다.

이 스타트 페이지와 메뉴 선택후 뜨는 페이지가 VS 메인폼의 MDI 자식폼이라고 할 수 있다.

메인 폼 자체의 형식이나 틀은 변하지 않으면서 작업을 할 수 있는 화면으로 전환되고,  클래스 프로젝트 등

여러개의 파일을 띄워놓고 이리저리 왔다갔다 하면서 작업을 할 수 있도록 구성해 놓았다.

 

MDI 자식폼 만들기

- MDI 가 무엇인지 알았으니 VS의 Start Page를 모델로 메인폼에 MDI 자식폼을 만들어 보자.

 

 

메뉴스트립, 툴스트립, 판넬 등등 윈폼에서 기본 제공 해 주는 툴로 메인폼의 틀을 만들었다.

위 사진에서 빨간색 네모로 둘러진 회색 영역이 Start Page가 들어갈 자식폼 영역이 된다.

모양을 다 만들었다면, 메인폼의 속성에서 IsMdiContainer 를 찾아 True 로 바꿔주자.

IsMdiContainer가 폼을 MDI로 제작할 수 있도록 해주는 속성이다.

 

자 메인폼의 디자인 준비는 끝났다.

이제 메인폼에 넣어줄 자식폼인 Start Page의 디자인을 해보자.


 

뭐 별거 없다. Start Page는 그냥 본인이 만들고 싶은대로 만들도록 하자.

이 아이는 메인폼처럼 속성을 바꿔주고 이런것도 없다. 그냥 폼 디자인만 하면 자식폼으로 넣어줄 수 있다.

 

메인폼과 자식폼의 디자인을 다 했으니 이제 코딩으로 넘어가자.

 

 

메인폼의 생성자 부분이다.

폼이 로드 되자마자 이벤트가 발생하도록 생성자에 메인폼 로드이벤트를 넣어주자.

 

 

메인폼 로드 부분이다.

자식폼으로 들어갈 StartPage를 생성해주고, 자식폼의 MDI 폼으로서의 부보는 현재폼으로 해준뒤

창크기 최대화로 상태를 설정해 주고 startPage를 보여주도록 했다.

 

이렇게만 하면 MDI 자식폼을 생성하여 보여주는 것 끝이다.

 

그럼 이제 다른 작업을 위해 쓸모없어진 startPage를 지워보자.

 

 

닫기 메뉴를 클릭했을 때, 현재 폼의 MDI자식의 길이만큼 for문을 돌린다.

for문 안에서 두번의 검사를 한다.

하나는 자식의 i번째가 '폼' 인지, 맞다면 그것의 이름이 "StartPage"인지.

두 조건에 해당하면 자식의 i번째를 지우도록 한다.

이렇게 하면 지우고 싶은 자식폼의 크기만큼 지울 수 있다.

 

 

쨔잔 메인폼에 StartPage 가 들어간 모습 !

위에 제목표시줄 보면 '고객관리프로그램 - [StartPage]' 로 자식폼의 이름이 추가된 것을 볼 수 있고,

자식폼의 창 최소화, 최대화, 닫기 상태메뉴가 추가 된 것을 볼 수 있당 !

 

 

쨔쟈잔 위 방식을 응용하여 요렇게 여러개의 폼을 일정 영역에 띄운모습 !

얘네들을 탭 컨트롤 툴로 만든다면 VS처럼 탭으로 요창저창 왔다갔다 할 수 있당 !

 

우왕 쉽다 !!!!!!!!

디자인만 더 이뿌게 가다듬어서

우리 모두 바로 작성하는 프로그램 말고 스타트 페이지가 있는 이쁜 프로그램을 만들어 보아욤