Instrukcje: tworzenie formularzy podrzędnych MDI

Formularze podrzędne MDI są istotnym elementem aplikacji interfejsu wielodokumentowego (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ę podobną RichTextBox do większości aplikacji do przetwarzania wyrazów. Podstawiając kontrolkę System.Windows.Forms innymi kontrolkami, takimi jak kontrolka DataGridView lub kombinacja kontrolek, można tworzyć okna podrzędne MDI (i, według rozszerzenia, aplikacji MDI) z różnymi możliwościami.

Tworzenie formularzy podrzędnych MDI

  1. Utwórz nowy projekt aplikacji Windows Forms w programie Visual Studio. W oknie Właściwości formularza ustaw jej IsMdiContainer właściwość na true , a właściwość WindowsState na Maximized.

    Spowoduje to wyznaczenie formularza jako kontenera MDI dla okien podrzędnych.

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

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

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

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

    Uwaga

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

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

    Zostanie otwarty Projektant Windows Forms z wyświetlonym formularzem Form2.

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

  7. W oknie Właściwości ustaw Anchor właściwość na Górna, Lewa i Dock Właściwość na Fill.

    RichTextBox Powoduje to całkowite wypełnienie obszaru formularza podrzędnego MDI, nawet gdy rozmiar formularza jest zmieniany.

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

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

    Uwaga

    W poniższym przykładzie program obsługi zdarzeń obsługuje Click zdarzenie dla elementu MenuItem2. Należy pamiętać, że w zależności od specyfiki architektury aplikacji element menu Nowy może nie mieć wartości 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ą #include dyrektywę 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 paska menu Plik i ustaw MdiWindowListItem właściwość na okno ToolStripMenuItem.

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

  11. Naciśnij klawisz 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

    Gdy formularz podrzędny MDI ma MainMenu składnik (zwykle ze strukturą menu elementów menu) i jest otwierany w formularzu nadrzędnym MDI, który ma MainMenu składnik (zwykle ze strukturą menu elementów menu), elementy menu zostaną scalone automatycznie, jeśli właściwość MergeType (i opcjonalnie właściwość MergeOrder ). MergeType Ustaw właściwość zarówno składników, jak MainMenu i wszystkich elementów menu formularza podrzędnego na MergeItemswartość . Ponadto ustaw MergeOrder właściwość tak, 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 przed Closing wystąpieniem Closing zdarzenia dla elementu nadrzędnego MDI. Anulowanie zdarzenia podrzędnego Closing MDI nie uniemożliwi wywoływanie zdarzenia nadrzędnego MDI Closing , CancelEventArgs jednak argument zdarzenia nadrzędnego Closing MDI zostanie ustawiony na truewartość . Możesz wymusić zamknięcie elementu nadrzędnego MDI i wszystkich formularzy podrzędnych MDI, ustawiając argument na CancelEventArgsfalse.

Zobacz też