메인(부모) 폼 설정

 

MFC 에서 사용하던 MDI 형태처럼Form 속에 여러 개의 Form을 넣을 수 있습니다.

먼저 메인(부모) 폼에서 자식을 받을 준비를 해야 하는데 IsMdiContainer을 true로 하면 됩니다.

 

 

 

 

IsMdiContainer 가 false 일 때 모습

 

 

 

 

 

 

IsMdiContainer 가 false 일 때 모습

 

 

 

 

 

자식 폼 설정

 

자식으로 사용할 폼 2개를 추가합니다. (FormChild1과 FormChild2)

 

 

 

 

 

 

 

그리고 메인 폼이 실행될 때 2개의 자식 폼을 추가해 줍니다.

private void Form1_Load(object sender, EventArgs e)

{

FormChild1 child1 = new FormChild1();

FormChild2 child2 = new FormChild2();

this.Controls.Add(child1);

this.Controls.Add(child2);

}

 

 

 

컴파일 하고 실행해 봅니다.

예외가 발생했습니다. [컨트롤에 최상위 컨트롤을 추가할 수 없습니다.]

 

 

 

메인 폼이 실행될 때 TopLevel를 false 로 설정하면 됩니다.

(TopLevel 과 TopMost 와 혼동하지 마세요^^)

 

private void Form1_Load(object sender, EventArgs e)

{

FormChild1 child1 = new FormChild1();

FormChild2 child2 = new FormChild2();

child1.TopLevel = false;

child2.TopLevel = false;

this.Controls.Add(child1);

this.Controls.Add(child2);

 

child1.Show();

child2.Show();

}

 

 

 

부모 속에 자식2개가 들어 있음을 확인할 수 있습니다.

 

사업자 정보 표시
화이트앳 | 박원호 | 서울 용산 서계동 252-8 | 사업자 등록번호 : 106-11-55283 | TEL : 070-4412-5754 | 통신판매신고번호 : 2011-서울용산-01007호 | 사이버몰의 이용약관 바로가기
  1. 모야 2012.09.06 14:00 신고

    안녕하세요..
    이 방법으로 하면 자식폼에 텍스트박스가 있을 경우, 마우스로 그 텍스트박스의 내용을 드래그할 수가 없네요.
    뭔가 방법이 있나요?

    • Favicon of http://pcsak3.com BlogIcon WhiteAT 2012.09.11 09:48 신고

      정확한 해결방법인지는 모르겠지만,

      자식 속성에서 Text= 를 없애 버리고(공백으로 하고)
      controlBox 속성을 False 로 하면
      자식 타이틀 바가 없어집니다.

      이렇게 하면 텍스트박스의 내용을 선택할 수 있게 됩니다.

      차일드 간의 변환은 어떻게 하냐구요^^?
      저는 위에 메뉴나 도구바로 차일드를 선택할수 있게 하여 사용하고 있습니다.~

+ Recent posts