다음을 통해 공유


방법: MDI 자식 폼 만들기

업데이트: 2007년 11월

MDI 자식 폼은 사용자 상호 작용의 중심이므로 MDI 응용 프로그램에는 필수적인 요소입니다.

다음 절차에서는 대부분의 워드 프로세서 응용 프로그램과 같이 RichTextBox 컨트롤을 표시하는 MDI 자식 폼을 만듭니다. System.Windows.Forms 컨트롤을 DataGridView 컨트롤과 같은 다른 컨트롤로 대체하거나 다른 컨트롤을 함께 사용하면 다양한 기능의 MDI 자식 창을 만들 수 있고 이를 좀 더 확장하면 MDI 응용 프로그램이 될 수 있습니다.

참고:

실제 설정이나 버전에 따라서 화면에 나타나는 대화 상자와 메뉴 명령이 도움말의 설명과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

MDI 자식 폼을 만들려면

  1. File 및 Window 최상위 메뉴 항목과 New 및 Close 메뉴 항목을 포함하는 메뉴 구조를 가진 MDI 부모 폼을 만듭니다. MDI 부모 폼을 만드는 방법에 대한 자세한 내용은 방법: MDI 상위 폼 만들기를 참조하십시오.

  2. 속성 창의 위쪽에 있는 드롭다운 목록에서 &Window 메뉴 항목에 해당하는 메뉴 항목을 선택하고 MdiList 속성을 true로 설정합니다.

    이렇게 하면 Window 메뉴가 열린 MDI 자식 창의 목록을 표시하고 활성화된 자식 창 옆에 확인 표시를 할 수 있습니다.

  3. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목 추가를 선택합니다.

    이 폼은 MDI 자식 폼의 템플릿으로 사용됩니다.

    참고:

    이 단계에서 만든 MDI 자식 폼은 표준 Windows Form입니다. 따라서 이 폼에는 폼의 투명도를 조정할 수 있는 Opacity 속성이 포함되어 있습니다. 그러나 Opacity 속성은 최상위 창에서 사용하도록 디자인되었습니다. 그리기 문제가 발생할 수도 있으므로 MDI 자식 폼에서는 이 속성을 사용하지 마십시오.

  4. 새 항목 추가 대화 상자의 템플릿 창에서 Windows Form(Visual Basic 또는 Visual C#의 경우)이나 Windows Forms 응용 프로그램(.NET)(Visual C++의 경우)을 선택합니다. 이름 상자에서 폼의 이름을 Form2로 지정합니다. 열기 단추를 클릭하여 폼을 프로젝트에 추가합니다.

    Form2라는 폼을 표시하며 Windows Forms 디자이너가 열립니다.

  5. 도구 상자에서 RichTextBox 컨트롤을 폼으로 끌어 옵니다.

  6. 속성 창에서 Anchor 속성을 Top, Left로 설정하고 Dock 속성을 Fill로 설정합니다.

    이렇게 설정하면 폼의 크기가 조정되더라도 RichTextBox 컨트롤이 MDI 자식 폼의 영역을 완전히 채웁니다.

  7. New 메뉴 항목에 대한 Click 이벤트 처리기를 만듭니다. 이벤트 처리기를 만드는 방법에 대한 자세한 내용은 방법: 디자이너를 사용하여 이벤트 처리기 만들기를 참조하십시오.

  8. 다음과 비슷한 코드를 삽입하여 사용자가 New 메뉴 항목을 클릭할 때 표시할 새 MDI 자식 폼을 만듭니다.

    참고:

    다음 예제에서는 이벤트 처리기가 MenuItem2에 대한 Click 이벤트를 처리합니다. 응용 프로그램 아키텍처의 특성에 따라 New 메뉴 항목이 MenuItem2가 아닐 수도 있습니다.

    Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
       Dim NewMDIChild As New Form2()
       'Set the Parent Form of the Child window.
       NewMDIChild.MdiParent = Me
       'Display the new form.
       NewMDIChild.Show()
    End Sub
    
    protected void MDIChildNew_Click(object sender, System.EventArgs e){
       Form2 newMDIChild = new Form2();
       // Set the Parent Form of the Child window.
       newMDIChild.MdiParent = this;
       // Display the new form.
       newMDIChild.Show();
    }
    
    private:
       void menuItem2_Click(System::Object ^ sender,
          System::EventArgs ^ e)
       {
          Form2^ newMDIChild = gcnew Form2();
          // Set the Parent Form of the Child window.
          newMDIChild->MdiParent = this;
          // Display the new form.
          newMDIChild->Show();
       }
    

    Visual C++에서 Form1.h의 맨 위에 다음과 같은 #include 지시문을 추가합니다.

    #include "Form2.h"
    
  9. F5 키를 눌러 응용 프로그램을 실행합니다. File 메뉴에서 New를 선택하면 새 MDI 자식 폼을 만들어 Window 메뉴에서 추적할 수 있습니다.

    참고:

    MergeType(선택에 따라서는 MergeOrder) 속성을 설정하면 MainMenu 구성 요소(대개 메뉴 항목의 메뉴 구조가 포함됨)를 가진 MDI 자식 폼이 MainMenu 구성 요소(대개 메뉴 항목의 메뉴 구조가 포함됨)를 가진 MDI 부모 폼에서 열릴 때 메뉴 항목이 자동으로 병합되게 할 수 있습니다. 두 MainMenu 구성 요소의 MergeType 속성과 자식 폼의 모든 메뉴 항목을 MergeItems로 설정합니다. 또한 두 메뉴에서 메뉴 항목을 원하는 순서대로 표시하려면 MergeOrder 속성을 설정합니다. MDI 부모 폼을 닫을 때, MDI 부모에 대한 Closing 이벤트가 발생하기 전에 각 MDI 자식 폼에서 Closing 이벤트가 발생합니다. MDI 자식의 Closing 이벤트를 취소하면 MDI 부모의 Closing 이벤트가 발생하지 않지만, MDI 부모의 Closing 이벤트에 대한 CancelEventArgs 인수가 true로 설정됩니다. CancelEventArgs 인수를 false로 설정하여 MDI 부모 및 모든 MDI 자식 폼을 강제로 닫을 수 있습니다.

참고 항목

작업

방법: MDI 상위 폼 만들기

방법: 활성 MDI 자식 확인

방법: 활성 MDI 자식으로 데이터 전송

방법: MDI 자식 폼 정렬

기타 리소스

MDI 응용 프로그램