Předdefinované dialogy 1032 OpenFileDialog, zobrazení dialogu pro otevření souboru začátečník
Chceme-li zobrazit dialog vyzývající uživatele k otevření souboru, vytvoříme nejprve instanci třídy System.Windows.Forms.OpenFileDialog. Otevřeme ho voláním metody ShowDialog. Metoda ShowDialog vrací položku výčtového typu DialogResult udávající, kterým tlačítkem dialogu byl uzavřen. Pokud je vrácena položka OK, znamená to, že si uživatel přeje soubor otevřít. private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = „Výběr souboru“; if (ofd.ShowDialog() == DialogResult.OK) { // Kód otevírající soubor. } }
1033 OpenFileDialog, zjištění cesty k vybranému souboru začátečník
Ke zjištění cesty k souboru, jenž byl vybrán pomocí dialogu typu OpenFileDialog, použijeme vlastnost FileName. OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { MessageBox.Show(„Byl vybrán soubor „ + ofd.FileName); }
1034 OpenFileDialog, výběr více souborů začátečník
Chceme-li, aby uživatel mohl v dialogu typu OpenFileDialog označit více souborů, jež mají být otevřeny, nastavíme jeho vlastnost MultiSelect na hodnotu true. OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = true;
Cesty vybraných souborů získáme pomocí vlastnosti FileNames, která je vrací jako pole typu string: foreach (string cesta in ofd.FileNames) { // Manipulace s cestami k vybraným souborům. }
K1866.indd 393
17.8.2011 14:29:22
394
Předdefinované dialogy
1035 OpenFileDialog, získání obsahu textového souboru pokročilý
Chceme-li pomocí dialogu OpenFileDialog vybrat soubor, jenž má být přečten, budeme postupovat následujícím způsobem:
Vytvoříme novou instanci třídy System.Windows.Forms.OpenFileDialog. Následně zavoláme metodu ShowDialog, která vrací položku výčtového typu DialogResult. Pokud je vrácena položka OK, znamená to, že uživatel soubor vybral. Následně vytvoříme novou instanci třídy System.IO.StreamReader představující datový proud k souboru, jenž má být přečten. Obsah souboru přečteme pomocí metody ReadToEnd. Nakonec datový proud uzavřeme metodou Close.
using System; using System.Windows.Forms; using System.IO; . . . void OtevriSoubor() { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { StreamReader sr = new StreamReader(ofd.FileName); textBox1.Text = sr.ReadToEnd(); sr.Close(); } else MessageBox.Show(„Nebyl vybrán žádný soubor“); }
1036 OpenFileDialog, nastavení výchozího adresáře začátečník
Chceme-li nastavit cestu k adresáři, jehož obsah bude zobrazen v dialogu typu OpenFileDialog po jeho otevření metodou ShowDialog, použijeme vlastnost InitialDirectory. OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = @“D:\“; ofd.ShowDialog(); . . .
1037 OpenFileDialog, nastavení fitru začátečník
Pomocí vlastnosti Filter dialogu OpenFileDialog můžeme určit typ souborů, jež mohou být tímto dialogem otevřeny. Tato vlastnost očekává řetězec skládající se z textu popisujícíhpo název a příponu souborů, jež mohou být otevřeny. openFileDialog1.Filter = „Textové soubory|*.txt|“ + „HTML soubory|*.html;*.htm|“ + „Zdrojové kódy C#|*.cs|“ + „Všechny soubory|*.*“;
K1866.indd 394
17.8.2011 14:29:22
Předdefinované dialogy
395
1038 SaveFileDialog, otevření dialogu pro uložení začátečník
Chceme-li otevřít dialog vyzývající uživatele k uložení souboru, vytvoříme nejprve instanci třídy System.Windows.Forms.SaveFileDialog. Zobrazíme ho voláním metody ShowDialog, která vrací položku výčtového typu DialogResult udávající, kterým tlačítkem dialogu byl uzavřen. Pokud je vrácena položka OK, znamená to, že si uživatel přeje soubor uložit. SaveFileDialog sfd = new SaveFileDialog(); if (sfd.ShowDialog() == DialogResult.OK) { // Kód starající se o uložení souboru... }
1039 SaveFileDialog, uložení textu do souboru pokročilý
Chceme-li pomocí dialogu SaveFileDialog vybrat cestu, kam má být uložen textový soubor, budeme postupovat následujícím způsobem:
Vytvoříme novou instanci třídy System.Windows.Forms.SaveFileDialog. Pomocí metody ShowDialog dialog otevřeme. Tato metoda vrací položku výčtového typu DialogResult udávající volbu uživatele. Pokud je vrácena položka OK, můžeme text do souboru uložit. Následně vytvoříme instanci třídy System.IO.StreamWriter představující datový proud k souboru, do něhož pomocí metody Write zapíšeme. Nakonec datový proud uzavřeme metodou Close.
using System; using System.IO; using System.Windows.Forms; . . . void UlozDoSouboru(string obsah) { SaveFileDialog sfd = new SaveFileDialog(); if (sfd.ShowDialog() == DialogResult.OK) { // Vytvoříme datový proud k vybranému souboru: StreamWriter zapisovac = new StreamWriter(sfd.FileName); // Zapíšeme do souboru: zapisovac.Write(obsah); // Datový proud uzavřeme: zapisovac.Close(); } }
K1866.indd 395
17.8.2011 14:29:23
396
Předdefinované dialogy
1040 ColorDialog, zjištění vybrané barvy začátečník
Chceme-li zjistit barvu, jež byla vybrána v komponentě ColorDialog, použijeme vlastnost Color, která ji vrací jako instanci struktury System.Drawing.Color. ColorDialog cd = new ColorDialog(); if (cd.ShowDialog() == DialogResult.OK) { Color vybranaBarva = cd.Color; MessageBox.Show(string.Format („Hodnoty složek vybrané barvy jsou R: {0}, G: {1}, B: {2}“, vybranaBarva.R,vybranaBarva.G,vybranaBarva.B)); }
1041 ColorDialog, zobrazení palety pro výběr libovolné barvy začátečník
Chceme-li u komponenty ColorDialog povolit zobrazovení palety barev, přiřadíme vlastnosti AllowFullOpen hodnotu true. Dialog se zobrazenou paletou barev je na obrázku 13. V této paletě bude implicitně zvolena červená barva. Chceme-li nastavit jiné barvy, přiřadíme vlastnosti Color instanci struktury System.Drawing.Color představující danou barvu. // Zobrazí ColorDialog s povolením výběru barvy z palety barev. // Implicitní barvou v této paletě je černá. ColorDialog cd = new ColorDialog(); cd.AllowFullOpen = true; cd.Color = System.Drawing.Color.Red; cd.ShowDialog();
Obrázek 13 Nastavením vlastnosti AllowFullOpen na hodnotu true dialogu ColorDialog povolíme zobrazení palety barev
K1866.indd 396
17.8.2011 14:29:23
Předdefinované dialogy
397
1042 FontDialog, zjištění vybraného druhu písma začátečník
Třída System.Windows.Forms.FontDialog představuje dialog určený pro výběr stylu písma. Ke zjištění stylu písma, jenž byl v této komponěntě vybrán, použijeme vlastnost Font, která vybraný styl písma vrací jako instanci třídy System.Drawing.Font. void NastavStylPisma() { FontDialog fd = new FontDialog(); if (fd.ShowDialog() == DialogResult.OK) { textBox1.Font = fd.Font; } }
1043 FontDialog, nastavení barvy textu začátečník
Dialog FontDialog implicitně neobsahuje nabídku pro výběr barvy písma. Chceme-li ji v tomto dialogu zobrazit, přiřadíme vlastnosti ShowColor hodnotu true. fontDialog1.ShowColor = true;
Pro získání vybrané barvy použijeme vlastnost Color, která tuto barvu vrací jako instanci struktury System.Drawing.Color. fontDialog1.ShowColor = true; if (fontDialog1 .ShowDialog() == DialogResult.OK) { textBox1.Font = fontDialog1.Font; textBox1.ForeColor = fontDialog1.Color; }
1044 FontDialog, nastavení minimální a maximální velikosti písma začátečník
Chceme-li nastavit nejmenší možnou velikost písma, jež může být vybráno v komponentě FontDialog, použijeme vlastnost MinSize. Pro nastavení největší velikosti písma použijeme vlastnost MaxSize. FontDialog fd = new FontDialog(); fd.MinSize = 6; fd.MaxSize = 20; fd.ShowDialog(); . . .
K1866.indd 397
17.8.2011 14:29:24
398
Předdefinované dialogy
1045 FolderBrowserDialog, zjištění cesty k vybrané složce začátečník
Chceme-li zjistit cestu ke složce, jež byla vybrána pomocí dialogu FolderBrowserDialog, použijeme vlastnost SelectedPath. FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK) { MessageBox.Show(„Byla vybrána složka „ + fbd.SelectedPath); }
1046 MessageBox, zobrazení zprávy začátečník
Chceme-li zobrazit okno se zprávou, použijeme statickou metodu Show třídy System. Windows.Forms.MessageBox a jako argument dosadíme řetězec představující danou zprávu. MessageBox.Show(„Nějaká zpráva“);
Pro nastavení titulku okna použijeme přetíženou verzi metody Show. Prvním argumentem je řetězec představující obsah zprávy a tím druhým řetězec představující nadpis okna. MessageBox.Show(„Nějaká zpráva“,“Nadpis“);
1047 MessageBox, tlačítka začátečník
Chceme-li zobrazit MessageBox s tlačítky a následně zjistit, které z nich bylo stisknuto, zavoláme jednu z přetížených verzí statické metody Show třídy MessageBox následujícím způsobem: DialogResult d = MessageBox.Show(„Je venku hezky?“, „Otázka“, MessageBoxButtons.YesNo);
Posledním argumentem metody Show je položka výčtového typu MessageBoxButtons definující, jaká tlačítka mají být na zobrazované zprávě zobrazena. Po stisku jednoho z tlačítek vrací tato metoda položku výčtového typu DialogResult určující, které z tlačítek bylo stisknuto: if (d == DialogResult.Yes) { MessageBox.Show(„Odpověděli jste ano.“); } else { MessageBox.Show(„Odpověděli jste ne.“); }
K1866.indd 398
17.8.2011 14:29:24