Multiple Document Interface používáme běžně, i když si toho možná nejsme vědomi. Jedná se o možnost mít otevřených více oken v rámci jedné aplikace. Tato podřízená okna jsou přímo závislá na rodičovském okně a nemohou se přesunout z jeho plochy. Rodičovská aplikace rovněž může provádět s potomky různé operace v závislosti na jejich změnách (zavření potomka, aktivace potomka apod.).
Pokud chceme vytvořit takovouto aplikaci, je třeba určit formulář, který bude rodičovský. To provedeme s pomocí vlastnosti Form.IsMdiContainer.
// konstruktor rodicovskeho formulare public FormParent() { ... // nastavim aktualni formular jako rodic this.IsMdiParent = true; // vytvoreni a zobrazeni formularu - potomku Form pdr = new FormChild(); // nastaveni rodicovskeho formulare pdr.MdiParent = this; pdr.Show(); Form pdr1 = new FormChild2(); pdr1.MdiParent = this; pdr1.Show(); } |
V kódu výše uvedeném jsme zároveň určili, která okna budou potomky aktuálního okna.
Nyní můžeme s okny - potomky provádět různé operace. Ukážeme si, jak lze použít prvek Menu. Z menu budeme ovládat, jak seřadit potomky aktuálního okna (horizontální, vertikální, kaskádové řazení).
Nejprve do rodičovského okna vložíme prvek Menu a do něj odkazy na styl uspořádání oken - potomků (TileHorizontal, TileVertical, Cascade). Pokud bychom toto chtěli dělat ručně, čeká nás dost zdlouhavé a nezáživné práce s vytvářením menu. Proto je výhodnější použít vizuální nástroje, které vygenerují menu tak, jak si jej vytvoříme v náhledu.
Poté, co vložíme menu do našeho projektu, se objeví na stadnardním místě. Když jednou klikneme na první pozici (většinou bývá prázdná), budeme moci tuto pozici přejmenovat a po přejmenování se objeví nová pozice. Pokud budeme chtít nad touto pozicí vyvolat nějakou akci, poklikáme na ni dvakrát a dostaneme se přímo do obsluhy události pro tuto pozici.
Ve vlastnostech konkrétní pozice si můžeme nastavit, jakou tato pozice bude mít klávesovou zkratku a také horkou klávesu.
Horká klávesa se označí přidáním znaku "&" před písmeno vlastnosti Text, které chceme označit jako "horké".
Klávesová zkratka se nastavuje prostřednictvím vlastnosti Shortcut.
Takto tedy vytvoříme hlavní položku menu "Uspořádat okna" a pod ni umístíme podmenu s položkami Horizontálně, Vertikálně, Kaskádovat. Následně vytvoříme akce pro tyto položky. Pro uspořádání oken se zavolá metoda předka, která své potomky uspořádá podle potřeby.
// usporada okna - potomky v rodicovskem okne horizontalne this.LayoutMdi(MdiLayout.TileHorizontal); ... |
Ukázka na práci s okny rodič - potomek je k dispozici zde. |