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
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
naMaximized
.Spowoduje to wyznaczenie formularza jako kontenera MDI dla okien podrzędnych.
Z kontrolki
Toolbox
przeciągnij kontrolkę MenuStrip do formularza. Ustaw jejText
właściwość na Plik.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.W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt, a następnie wybierz polecenie Dodaj>nowy element.
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.
Z przybornika przeciągnij kontrolkę RichTextBox do formularza.
W oknie Właściwości ustaw
Anchor
właściwość na Górna, Lewa iDock
Właściwość na Fill.RichTextBox Powoduje to całkowite wypełnienie obszaru formularza podrzędnego MDI, nawet gdy rozmiar formularza jest zmieniany.
Kliknij dwukrotnie element menu Nowy , aby utworzyć dla niego procedurę Click obsługi zdarzeń.
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ściMenuItem2
.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"
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.
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
true
wartość . Możesz wymusić zamknięcie elementu nadrzędnego MDI i wszystkich formularzy podrzędnych MDI, ustawiając argument na CancelEventArgsfalse
.
Zobacz też
.NET Desktop feedback