15. diel - Windows Forms - Dialógy
V minulej lekcii, Ďalšie ovládacie prvky Windows Forms , sme sa venovali pokročilým ovládacím
prvkom WinForms. V dnešnom tutoriálu sa pozrieme na tvorbu menu v okenné
aplikáciu a otváranie súborov / priečinkov pomocou dialógov. A tiež na to,
ako sa používa MessageBox
. To všetko v C# .NET.
MenuStrip
Tento ovládací prvok zaisťuje menu v hornej časti aplikácie. Používa sa veľmi jednoducho. Po jeho pridanie do projektu stačí len vybrať názvy a počet položiek, ako možno vidieť na obrázku. Vo vlastnostiach netreba nič nastavovať. Ďalej stačí na jednotlivé voľby 2x kliknúť a ste v kóde, kde si nastavíte, aká akcia sa po kliknutí myšou na danú položku stane.
ToolStrip
ToolStrip
je veľmi podobný predchádzajúcemu
MenuStrip
. Sám o sebe ale nič nerobí a slúži na pridanie
niekoľkých ďalších prvkov. Napr. Button
, Label
,
DropDownButton
(čo je verzia na MenuStrip
),
Separator
(slúžia na oddelenie) a niekoľko ďalších. Ich
nastavenie je opäť veľmi jednoduché, takže u tlačidiel opäť stačí 2x
kliknúť myšou a môžete písať kód.
ContextMenuStrip
Tento ovládací prvok nájdete popísaný v článku o tray ikonke, takže ju tu uvádzam len pre poriadok. Jedná sa vlastne o menu, zobrazujúce sa po kliknutí na určitú komponent.
Folderbrowserdialog
Ak chcete pracovať v programe so zložkami, je táto komponenta prakticky
nutnosťou. Umožňuje intuitívne a jednoduchý výber zložky. Z vlastností
je dôležitá hlavne RootFolder
, ktorá určuje predvolený
priečinok pri otvorení dialógu. Navyše sa nedostanete "späť", pokiaľ teda
nastavíte napr. Zložku Dokumenty
ako RootFolder
, je
možné vybrať len podpriečinky dokumentov. ShowNewFolderButton
potom určuje, či je možné tvoriť nové zložky.
V kóde sa dialóg otvára metódou ShowDialog()
, vybranú
zložku potom získame pomocou vlastnosti SelectedPath
.
Po vyvolaní dialógu je nutné sa opýtať, či bol ukončený potvrdením,
inak by sme danú akciu vykonali aj v prípade, že používateľ dialóg zavrie
krížikom alebo tlačidlom Zrušiť. Metóda ShowDialog()
nám
vždy vráti hodnotu podľa toho, akým tlačidlom bol ukončený.
if (folderBrowseDialog1.ShowDialog() == DialogResult.OK) { string text = folderBrowserDialog1.SelectedPath; }
OpenFileDialog
Otváranie zložiek sme už prebrali, teraz sú na čase súbory. Postup je
takmer rovnaký. Zas komponent pridáme na formulár. Z vlastností do začiatku
stojí za zmienku InitialDirectory
, čo je prakticky to isté ako
vlastnosť RootFolder
. Multiselect
potom určuje, či
je možné vybrať viac súborov. Dialóg sa opäť v kóde otvára metódou
ShowDialog()
a zvolený súbor získame pomocou vlastnosti
FileName
.
SaveFileDialog
Tento dialóg slúži na ukladanie súborov. Z vlastností stojí za
spomenutie FileName
, čo je meno výsledného súboru, ďalej
InitialDirectory
, teda adresár, kde sa dialóg po otvorení bude
nachádzať. DefaultExt
potom určuje príponu súboru.
OverwritePrompt
sa zas pýta, či sa má súbor prepísať, ak
existuje. Title
potom nastavuje názov dialógu. Otvára sa zas
metódou ShowDialog()
.
Ak chcete vykonať ďalšie akcie, použijete udalosti. Konkrétne event
FileOk
, kde si nastavíte akciu, ktorá sa vykoná za predpokladu,
že je všetko v poriadku. Názov súboru získate vlastností
FileName
.
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { File.Create(saveFileDialog1.FileName); }
ColorDialog
Ako možno vyčítať z názvu, tento ovládací prvok má čo robiť s
farbami. Jedná sa o dialóg, ktorý umožňuje užívateľovi vybrať farbu. Z
vlastností je dôležitá najmä AllowFullOpen
, ktorá určuje,
či je možné "vytvoriť" vlastnú farbu. Color
potom udáva, aká
farba bude defaultný po otvorení dialógu. Dialóg sa opäť otvára metódou
ShowDialog()
.
Farbu potom získame vlastností Color
. Kód nižšie vyfarbia
pozadia okna zvolenou farbou.
if (colorDialog1.ShowDialog() == DialogResult.OK) { this.BackColor = colorDialog1.Color; }
FontDialog
Tento dialóg je veľmi podobný tomu na výber farieb. Akurát tu vyberáte
font písma, čo sa dá odvodiť z jeho názvu. Len pre poriadok pripomeniem,
že sa otvára metódou ShowDialog()
. Z jeho vlastností sú
dôležité MinSize
a MaxSize
, kde si môžete
nastaviť, aká veľkosť pôjde vybrať (0
je pre neobmedzenú).
ShowEffect
potom dovoľuje vybrať podčiarknutie alebo
prečiarknutie a ShowColor
výber farby fontu.
Font získame vlastností Font
, a ak vyberáme farbu, musíme ju
získať zvlášť pomocou vlastnosti Color
. Tu je ešte
ukážka:
if (fontDialog1.ShowDialog() == DialogResult.OK) { label1.Font = fontDialog1.Font; label1.ForeColor = fontDialog1.Color; label1.Text = “Tohle je vybraný font“; }
MessageBox
Síce sa nejedná o ovládací prvok, ale napriek tomu si tu svoje miesto zaslúži. Je to ten pop-up dialóg, ktorý vyskakuje napr. Keď vykonávate nejakú neštandardnú činnosť ako je vysypanie koša.
Nasledujúci kód:
MessageBox.Show("Toto je hlavní text okna se zprávou", "Název okna", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
Má za následok vyvolanie dialógu nižšie:
Prvý text je teda správa, druhý názov okna a
MessageBoxButtons
určuje, aká tu budú tlačidlá, na výber je
samotné OK, OK a Cancel, Áno a Nie apod. MessageBoxIcon
sa stará
o ikonku vľavo vedľa textu. Opäť ich je na výber niekoľko. Niektoré
parametre je možné vynechať.
Určite by bolo dobré vedieť reagovať na tlačidlá v
MessageBox
u, že? To si hneď ukážeme.
Nejde o žiadnu vedu. Celý kód s MessageBoxem
** obalíme do
if
a pridáme == DialogResult.OK `.(kde `OK
je
požadované tlačidlo). Tým pádom sa daná akcia v podmienke vykoná iba pri
výbere konkrétneho tlačidla.
Nižšie je ukážka:
DialogResult dr = MessageBox.Show("Opravdu smazat?", "Potvrzení", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { // ... }
V budúcej lekcii, Ovládacie prvky Windows Forms štvrtýkrát , si predstavíme napr. Pokročilé textbox, časovač alebo progressbar.