NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 15 - Windows Forms - Dialogy

V minulé lekci, Další ovládací prvky Windows Forms, jsme se věnovali pokročilým ovládacím prvkům WinForms.

V dnešním tutoriálu se podíváme na tvorbu menu v okenní aplikaci a otevírání souborů/složek pomocí dialogů. A také na to, jak se používá MessageBox. To vše v C# .NET.

MenuStrip

Tento ovládací prvek zajišťuje menu v horní části aplikace. Používá se velice jednoduše. Po jeho přidání do projektu stačí jen vybrat názvy a počet položek, jak lze vidět na obrázku. Ve vlastnostech není třeba nic nastavovat. Dále stačí na jednotlivé volby 2x kliknout a jste v kódu, kde si nastavíte, jaká akce se po kliknutí myší na danou položku stane.

Menu strip v C# .NET - Windows Forms - Okenní aplikace v C# .NET

ToolStrip

ToolStrip je velmi podobný předchozímu MenuStrip. Sám o sobě ale nic nedělá a slouží k přidání několika dalších prvků. Např. Button, Label, DropDownButton (což je verze na MenuStrip), Separator (slouží k oddělení) a několik dalších. Jejich nastavení je opět velmi jednoduché, takže u tlačítek opět stačí 2x kliknout myší a můžete psát kód.

Toolstrip v C# .NET - Windows Forms - Okenní aplikace v C# .NET

ContextMenuStrip

Tento ovládací prvek najdete popsaný v článku o tray ikonce, takže ji zde uvádím jen pro pořádek. Jedná se vlastně o menu, zobrazující se po kliknutí na určitou komponentu.

FolderBrowserDialog

Pokud chcete pracovat v programu se složkami, je tato komponenta prakticky nutností. Umožňuje intuitivní a jednoduchý výběr složky. Z vlastností je důležitá hlavně RootFolder, která určuje výchozí složku při otevření dialogu. Navíc se nedostanete "zpět", pokud tedy nastavíte např. složku Dokumenty jako RootFolder, je možné vybrat pouze podsložky dokumentů. ShowNewFolderButton poté určuje, zda je možné tvořit nové složky.

V kódu se dialog otevírá metodou ShowDialog(), vybranou složku poté získáme pomocí vlastnosti SelectedPath.

Po vyvolání dialogu je nutné se zeptat, zda byl ukončen potvrzením, jinak bychom danou akci provedli i v případě, že uživatel dialog zavře křížkem nebo tlačítkem Storno. Metoda ShowDialog() nám vždy vrátí hodnotu podle toho, jakým tlačítkem byl ukončen.

if (folderBrowseDialog1.ShowDialog() == DialogResult.OK)
{
    string text = folderBrowserDialog1.SelectedPath;
}
C# .NET FileBrowserDialog - Windows Forms - Okenní aplikace v C# .NET

OpenFileDialog

Otevírání složek jsme již probrali, nyní jsou na čase soubory. Postup je téměř stejný. Zas komponentu přidáme na formulář. Z vlastností do začátku stojí za zmínku InitialDirectory, což je prakticky to samé jako vlastnost RootFolder. Multiselect poté určuje, jestli je možné vybrat více souborů. Dialog se opět v kódu otevírá metodou ShowDialog() a vybraný soubor získáme pomocí vlastnosti FileName.

C# .NET OpenFileDialog - Windows Forms - Okenní aplikace v C# .NET

SaveFileDialog

Tento dialog slouží k ukládání souborů. Z vlastností stojí za zmínění FileName, což je jméno výsledného souboru, dále InitialDirectory, tedy adresář, kde se dialog po otevření bude nacházet. DefaultExt poté určuje příponu souboru. OverwritePrompt se zas ptá, jestli se má soubor přepsat, pokud existuje. Title pak nastavuje název dialogu. Otevírá se zas metodou ShowDialog().

Pokud chcete provést další akce, použijete události. Konkrétně event FileOk, kde si nastavíte akci, jež se provede za předpokladu, že je vše v pořádku. Název souboru získáte vlastností FileName.

private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    File.Create(saveFileDialog1.FileName);
}
C# .NET SaveFileDialog - Windows Forms - Okenní aplikace v C# .NET

ColorDialog

Jak lze vyčíst z názvu, tento ovládací prvek má co dělat s barvami. Jedná se o dialog, který umožňuje uživateli vybrat barvu. Z vlastností je důležitá zejména AllowFullOpen, která určuje, jestli je možné „vytvořit“ vlastní barvu. Color poté udává, jaká barva bude defaultní po otevření dialogu. Dialog se opět otevírá metodou ShowDialog().

Barvu poté získáme vlastností Color. Kód níže vybarví pozadí okna zvolenou barvou.

if (colorDialog1.ShowDialog() == DialogResult.OK)
{
   this.BackColor = colorDialog1.Color;
}
C# .NET ColorDialog - Windows Forms - Okenní aplikace v C# .NET

FontDialog

Tento dialog je velmi podobný tomu na výběr barev. Akorát zde vybíráte font písma, což lze odvodit z jeho názvu. Jen pro pořádek připomenu, že se otevírá metodou ShowDialog(). Z jeho vlastností jsou důležité MinSize a MaxSize, kde si můžete nastavit, jaká velikost půjde vybrat (0 je pro neomezenou). ShowEffect poté dovoluje vybrat podtržení nebo přeškrtnutí a ShowColor výběr barvy fontu.

Font získáme vlastností Font, a pokud vybíráme barvu, musíme ji získat zvlášť pomocí vlastnosti Color. Zde je ještě ukázka:

if (fontDialog1.ShowDialog() == DialogResult.OK)
{
   label1.Font = fontDialog1.Font;
   label1.ForeColor = fontDialog1.Color;
   label1.Text = "Toto je vybraný font";
}
C# .NET FontDialog - Windows Forms - Okenní aplikace v C# .NET

MessageBox

Sice se nejedná o ovládací prvek, ale přesto si zde své místo zaslouží. Je to ten pop-up dialog, který vyskakuje např. pokud provádíte nějakou nestandardní činnost jako je vysypání koše.

Následující kód:

MessageBox.Show("Toto je hlavní text okna se zprávou", "Název okna", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

Má za následek vyvolání dialogu niže:

C# .NET MessageBox - Windows Forms - Okenní aplikace v C# .NET

První text je tedy zpráva, druhý název okna a MessageBoxButtons určuje, jaká zde budou tlačítka, na výběr je samotné OK, OK a Cancel, Ano a Ne apod. MessageBoxIcon se stará o ikonku vlevo vedle textu. Opět jich je na výběr několik. Některé parametry lze vynechat.

Určitě by bylo dobré umět reagovat na tlačítka v MessageBoxu, že? To si hned ukážeme.

Nejde o žádnou vědu. Celý kód s MessageBoxem obalíme do if a přidáme == DialogResult.OK.(kde OK je požadované tlačítko). Tím pádem se daná akce v podmínce provede pouze při výběru konkrétního tlačítka.

Níže je ukázka:

DialogResult dr = MessageBox.Show("Opravdu smazat?", "Potvrzení", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dr == DialogResult.OK)
{
    // ...
}

V příští lekci, Ovládací prvky Windows Forms počtvrté, si představíme např. pokročilé TextBoxy, časovač nebo progressbar.


 

Předchozí článek
Další ovládací prvky Windows Forms
Všechny články v sekci
Windows Forms - Okenní aplikace v C# .NET
Přeskočit článek
(nedoporučujeme)
Ovládací prvky Windows Forms počtvrté
Článek pro vás napsal Paradise
Avatar
Uživatelské hodnocení:
25 hlasů
Aktivity