MDI, to z j.
angielskiego Multi Document Interface, czyli sposób tworzenia interfejsu aplikacji oparty o wiele dokumentów, które prezentowane są użytkownikowi, jako okna otwierane wewnątrz głównego okna aplikacji. Przykładem wykorzystania takiego interfejsu może być starsza aplikacja Microsoft Excel, w której wewnątrz głównej aplikacji otwierane są poszczególne arkusze (xls). Interfejs ten był kiedyś bardzo popularny w aplikacjach, które pozwalały na jednoczesną pracę nad wieloma dokumentami, teraz częściej mamy do czynienia z jego pewną odmianą. W niniejszym artykule pokazane zostanie, jak można ten interfejs wykorzystać w aplikacji opartej o .NET (przykłady w C#) i Windows Forms.
Konfiguracja okna głównego
Pierwszą
czynnością, jaką należy wykonać przed przystąpieniem do
wykorzystania interfejsu typu MDI, jest konfiguracja okna głównego
aplikacji, tak aby mogło ono być kontenerem dla innych okien
dokumentów. W tym celu ustawiamy właściwość IsMdiContainer
na true, np. w konstruktorze:
this.IsMdiContainer = true;
Tworzenie i dodawanie okien dokumentów
Kolejnym krokiem
jest utworzenie okna dokumentu (np. w tym przypadku ChildForm)
i dodanie go do głównego okna, przez:
ChildForm childForm = new ChildForm(); childForm.MdiParent = this; // this is the main application window childForm.Show();
Ustalanie układu okien
.NET Framework
zapewnia również automatycznie ustalanie układu okien, dostępne
są ustawienia:
- Kaskadowo:
this.LayoutMdi( MdiLayout.Cascade );
- Horyzontalnie („Ustaw okna poziomo”):
this.LayoutMdi( MdiLayout.TileHorizontal );
- Wertykalnie („Ustaw okna pionowo”):
this.LayoutMdi( MdiLayout.TileVertical );
Identyfikacja wybranego okna
Jest możliwość łatwego zidentyfikowania aktualnie wybranego okna (dokumentu) poprzez wykorzystanie właściwości ActiveMDIChild, np.:Form aForm; aForm = this.ActiveMDIChild;
Automatyczne menu z listą okien
Dodatkowo jest również możliwość, by .NET zapewnił nam menu z automatyczną listą dostępnych okien (dokumentów). Aby to osiągnąć wybieramy element typu MenuStrip okna głównego i do właściwości MdiWindowListItem wybieramy element menu, w którym chcemy mieć listę okien (dokumentów), np. :this.menuStrip1.MdiWindowListItem = this.windowToolStripMenuItem;
Podsumowanie
Aplikacje typu MDI
oparte są na modelu okien rodzic/dziecko. Rodzic zawiera i
organizuje wiele okien dzieci. Okno rodzica musi być skonfigurowane
poprzez ustawienie właściwości IsMdiContainer, natomiast
okna dzieci konfigurowane są tak, by ich właściwość MdiParent
wskazywała na rodzica.
Okno główne
aplikacji MDI zapewnia metody i właściwości zapewniające
organizowanie okien dokumentów. Okna te, mogą być ustawione przez
okno główne poprzez użycie metody LayoutMdi. Dodatkowo
aktualnie aktywne okno jest dostępne pod właściwością
ActiveMDIChild okna głównego. Możemy łatwo utworzyć listę
dostępnych okien dokumentów jak elementy menu, poprzez konfigurację
właściwości MdiWindowListItem dla menu (MenuStrip)
okna głównego.
Witam
OdpowiedzUsuńZakładając, że każda nowa forma posiada komponent RichTextBox, jak teraz do aktywnego okna np. dodać jakiś dowolny tekst np. "Okno aktywne o godz."+DateTime.Now.ToString()); ?
ChildForm clodunt be found
OdpowiedzUsuń