wtorek, 13 lipca 2010

70-505: Aplikacja typu MDI w Windows Forms .NET (przykłady w C#)[PL]

Promuj
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.
Promuj

2 komentarze:

  1. Witam
    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()); ?

    OdpowiedzUsuń
  2. ChildForm clodunt be found

    OdpowiedzUsuń

Posty powiązane / Related posts