Programování v jazyku C# II.
3.kapitola
Obsah • • • •
Dokování a kotvení Panely, splittery a jiné kontajnery Složitejší kontrolky MDI aplikace
2/20
Vnější a vnitřní okraje • Umožňují snažší rozmisťování prvku – automatické rozmisťování – plně respektuje okraje – ruční rozmisťování – vodící linky
• Možnost nastavit všechny okraje nebo každý zvlášť • Vlastnost Margin – vnější okraje kontrolky
• Vlastnost Padding – vnitřní okraje kontrolky panel1.Margin = new System.Windows.Forms.Padding(20); panel1.Padding = new System.Windows.Forms.Padding(10,20,10,20);
3/20
Kotvení • Vlastnost Anchor – ukotví pozici kontrolky k některému z okrajů – výčet AnchorStyles • None, Left, Right, Bottom, Top • možnost kombinovat různé styly
– je-li kontrolka uchycena ze dvou protilehlých stran, mění se její velikost s velikostí formuláře
• Príklad:
4/20
Dokování • Vlastnost Dock – přilepení kontrolky na některou ze stran rodiče – výčet DockStyle • None, Left, Right, Top, Bottom, Fill
– při přichytávání více kontrolek záleží na jejich z-pořadí v parent.Controls • metody BringToFront() a SendToBack()
• Příklad:
5/20
Kontajnery • Jednoduchý způsob pro seskupení souvisejících kontrolek – kolekce Controls
• Jsou to kontrolky – nastavení okrajů – nastavení ukotvení – nastavení dokování
• Možnost vypnout celou skupinu – vlastnost Enable
6/20
Třída Panel a GroupBox • Třída Panel – umožňuje přidání posuvníků • vlastnost AutoScroll
• Třída GroupBox – obsahuje popisek
7/20
Splitter • Třída Splitter – – – –
pouze předěl mezi dvěma kontrolkami umožňuje měnit velikost zadokovaných kontrolek za běhu možnost nastavit MinimumSize a MaximumSize možnost nastavit směr – podle způsobu dokování
• Trída SpliContainer
– zjednodušuje práci se splitterem – složená komponenta • obsahuje dva nezávislé panely
8/20
Automatické rozložení kontrolek • Třída FlowLayoutPanel – kontrolky se automaticky řadí podle velikosti kontajneru – možnost nastavení směru • FlowDirection
• Třída TableLayoutPanel – rozdělí oblast na buňky – přidá kontrolkám vlastnosti • Cell – index buňky • ColumnSpan, RowSpan – sloučení buňek
9/20
Složitější kontrolky • Možnost zobrazování více informací rozumnější formou • Třída ImageList – zajišťuje metody pro správu kolekce obrázku • kolekce Images • stejná velikost – ImageSize
– typicky je používán pro některé složitější kontrolky • TreeView • ListView • ToolBar
10/20
Třída TreeView • • • •
Hierarchické uspořádání položek Položky uloženy v kolekci Nodes Jednotlivé položky – třída TreeNode Možnost přiřadit jednotlivým položkám obrázky – normální (ImageIndex) – při výběru (SelectedImageIndex)
• Možnost nastavit vizuální vlastnosti – zobrazit čáry (ShowLines) – plus/minus tlačítka (ShowPlusMinus) – ...
11/20
Příklad TreeView treeView1.Nodes.AddRange(new TreeNode[] { new TreeNode("Zvírata", new TreeNode[] { new TreeNode("Savci"), new TreeNode("Ptáci") }), new TreeNode("Rostilny") }); treeView1.Nodes[1].Nodes.Add(new TreeNode("Dreviny"));
12/20
Třída ListView • Umožňuje zobrazovat kolekci položek ve 4 různých zobrazeních – – – – –
• • • • • •
velké ikony malé ikony seznam detaily příklad - viz. Průzkumník
Možnost přiřadit obrázky Možnost přidat detaily Položky uloženy v kolekci Items Možnost rozřadit do skupin – kolekce Groups Názvy sloupečků uloženy v kolekci Columns Dodatečné informace u položky v kolekci SubItems 13/20
MDI aplikace • Multiple Document Interface – možnost pracovat s více dokumenty najednou • i různorodé dokumenty
• • • •
Vytvoření MDI kontajneru Vytvoření MDI dětí Rozložení oken Společné menu
14/20
MDI kontajner • Vlastnost formuláře IsMDIContainer – pokud true, formulář muže hostovat MDI okna
• klientská MDI oblast pokrývá celé okno • MDI okno se vykresluje v klientské oblasti • uzavření hlavního okna vyvolá událost Closing u všech dětí
15/20
MDI děti • Jakýkoliv formulář – vlastnost Form MdiParent • rodič musí být container, jinak se vytvoří výjimka
• Pole dětí – vlastnost Form[] MdiChildren
• Aktivní díte – vlastnost Form ActiveMdiChild • vhodné testovat typ a eventuálně přetypovat • muže být null
16/20
Uspořádání oken • Metoda LayoutMdi (MdiLayout) – ArrangeIcons, Cascade, TileHorizontal, TileVertical Form dite; dite = new MdiChild(); dite.MdiParent = this; dite.Show(); dite = new MdiChild(); dite.MdiParent = this; dite.Show(); ... this.LayoutMdi (MdiLayout.Cascade);
17/20
Menu • U třídy MainMenu – u položky vlastnost bool MdiList • do položky automaticky přidá seznam MDI oken
• U třídy MenuStrip – u menu vlastnost ToolStripMenuItem MdiWindowListItem ToolStripMenuItem mdi = new ToolStripMenuItem("Okýnka"); this.menuStrip1.MdiWindowLi stItem = mdi; this.menuStrip1.Item s.Add(mdi);
18/20
Kombinování menu • Možnost kombinovat menu rodiče a mdi okna – vlastnost MergeIndex • určuje shodné položky menu
– vlastnost MergeAction • určuje způsob sjednocení menu • MatchOnly – najde shodu a sjednotí menu • Replace – nahradí shodná menu • ...
19/20
Konec
20/20