Udostępnij za pośrednictwem


Jak utworzyć formularze podrzędne MDI

Formularze podrzędne MDI są podstawowym elementem aplikacji interfejsu Multiple-Document (MDI), ponieważ te formularze są centrum interakcji użytkownika.

W poniższej procedurze użyjesz programu Visual Studio do utworzenia formularza podrzędnego MDI, który wyświetla kontrolkę RichTextBox, podobnie jak większość aplikacji do przetwarzania wyrazów. Podstawiając kontrolkę System.Windows.Forms innymi kontrolkami, takimi jak kontrolka DataGridView lub kombinacja kontrolek, można utworzyć okna podrzędne MDI (i przez rozszerzenie, aplikacje MDI) z różnymi możliwościami.

Utwórz formularze podrzędne MDI

  1. Utwórz nowy projekt aplikacji Windows Forms w programie Visual Studio. W oknie właściwości formularza ustaw jej właściwość na i jej właściwość na wartość .

    Oznacza to formularz jako kontener MDI dla okien podrzędnych.

  2. Z Toolboxprzeciągnij kontrolkę MenuStrip do formularza. Ustaw jej właściwość Text na wartość File.

  3. Kliknij wielokropek (...) obok właściwości Items, a następnie kliknij Dodaj, aby dodać dwa podrzędne elementy menu paska narzędziowego. Ustaw właściwość Text dla tych elementów na New i Window.

  4. W eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt, a następnie wybierz pozycję Dodaj nowy element>.

  5. W oknie dialogowym Dodawanie nowego elementu, wybierz pozycję Formularz Windows (w języku Visual Basic lub Visual C#) lub Windows Forms Application (.NET) (w języku Visual C++) z okienka Szablony. W polu nazwa nadaj formularzowi nazwę Form2. Wybierz pozycję Otwórz, aby dodać formularz do projektu.

    Uwaga / Notatka

    Formularz podrzędny MDI utworzony w tym kroku jest standardowym formularzem systemu Windows. W związku z tym ma właściwość Opacity, która umożliwia kontrolowanie przezroczystości formularza. Jednak właściwość Opacity została zaprojektowana dla okien najwyższego rzędu. Nie używaj go z formularzami podrzędnymi MDI, ponieważ mogą wystąpić problemy z renderowaniem.

    Ten formularz będzie szablonem formularzy podrzędnych MDI.

    Windows Forms Designer zostanie otwarty, wyświetlając Form2.

  6. Z przybornika , przeciągnij kontrolkę RichTextBox do formularza.

  7. W oknie właściwości ustaw właściwość Anchor na Top, Left oraz właściwość Dock na Fill.

    Powoduje to, że kontrolka RichTextBox całkowicie wypełnia obszar formularza podrzędnego MDI, nawet gdy formularz jest zmieniany.

  8. Kliknij dwukrotnie element menu Nowy, aby utworzyć dla niego procedurę obsługi zdarzeń Click.

  9. Wstaw kod podobny do poniższego, aby utworzyć nowy formularz podrzędny MDI, gdy użytkownik kliknie element menu Nowy.

    Uwaga / Notatka

    W poniższym przykładzie program obsługi zdarzeń obsługuje zdarzenie Click dla MenuItem2. Należy pamiętać, że w zależności od specyfiki architektury aplikacji element menu Nowy może nie być 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();
       }
    

    W języku C++dodaj następującą dyrektywę #include w górnej części formularza Form1.h:

    #include "Form2.h"
    
  10. Na liście rozwijanej w górnej części okna właściwości wybierz pasek menu odpowiadający paskowi menu Plik i ustaw właściwość MdiWindowListItem na okno ToolStripMenuItem.

    Dzięki temu menu okna może obsługiwać listę otwartych okien podrzędnych MDI z znacznikiem wyboru obok aktywnego okna podrzędnego.

  11. Naciśnij F5, aby uruchomić aplikację. Wybierając pozycję Nowy z menu Plik, możesz utworzyć nowe formularze podrzędne MDI, które są śledzone w elemencie menu Okno.

    Uwaga / Notatka

    Gdy formularz podrzędny MDI ma składnik MainMenu (zwykle ze strukturą elementów menu) i jest otwierany w formularzu nadrzędnym MDI, który ma składnik MainMenu (zwykle ze strukturą elementów menu), elementy menu zostaną scalone automatycznie, pod warunkiem, że ustawisz właściwość MergeType (i opcjonalnie właściwość MergeOrder). Ustaw właściwość MergeType zarówno składników MainMenu, jak i wszystkich elementów menu formularza podrzędnego na MergeItems. Ponadto ustaw właściwość MergeOrder, aby elementy menu z obu menu pojawiały się w żądanej kolejności. Ponadto należy pamiętać, że po zamknięciu formularza nadrzędnego MDI każda z formularzy podrzędnych MDI zgłasza zdarzenie Closing przed wystąpieniem zdarzenia Closing dla elementu nadrzędnego MDI. Anulowanie zdarzenia Closing dziecka MDI nie zapobiegnie wywołaniu zdarzenia Closing rodzica MDI; jednak argument CancelEventArgs w zdarzeniu Closing rodzica MDI zostanie teraz ustawiony na wartość true. Możesz wymusić zamknięcie głównego okna MDI oraz wszystkich okien podrzędnych MDI, ustawiając argument CancelEventArgs na wartość false.

Zobacz także