Předdefinované dialogy 1032 OpenFileDialog, zobrazení dialogu pro otevření souboru Chceme-li zobrazit dialog vyzývající uživatele k otevření souboru, vytvoříme nejprve instanci třídy SystemWindowsFormsOpenFileDialog 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) ofdtitle = Výběr souboru ; if (ofdshowdialog() == DialogResultOK) // Kód otevírající soubor 1033 OpenFileDialog, zjištění cesty k vybranému souboru Ke zjištění cesty k souboru, jenž byl vybrán pomocí dialogu typu OpenFileDialog, použijeme vlastnost FileName if (ofdshowdialog() == DialogResultOK) MessageBoxShow( Byl vybrán soubor + ofdfilename); 1034 OpenFileDialog, výběr více souborů 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 ofdmultiselect = true; Cesty vybraných souborů získáme pomocí vlastnosti FileNames, která je vrací jako pole typu string: foreach (string cesta in ofdfilenames) // Manipulace s cestami k vybraným souborům
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 SystemWindowsFormsOpenFileDialog 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 SystemIOStreamReader 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 SystemWindowsForms; using SystemIO; void OtevriSoubor() if (ofdshowdialog() == DialogResultOK) StreamReader sr = new StreamReader(ofdFileName); textbox1text = srreadtoend(); srclose(); else MessageBoxShow( Nebyl vybrán žádný soubor ); 1036 OpenFileDialog, nastavení výchozího adresáře 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 ofdinitialdirectory = @ D:\ ; ofdshowdialog(); 1037 OpenFileDialog, nastavení fitru 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 openfiledialog1filter = Textové soubory *txt + HTML soubory *html;*htm + Zdrojové kódy C# *cs + Všechny soubory ** ;
Předdefinované dialogy 395 1038 SaveFileDialog, otevření dialogu pro uložení Chceme-li otevřít dialog vyzývající uživatele k uložení souboru, vytvoříme nejprve instanci třídy SystemWindowsFormsSaveFileDialog 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 (sfdshowdialog() == DialogResultOK) // 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 SystemWindowsFormsSaveFileDialog 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 SystemIOStreamWriter 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 SystemIO; using SystemWindowsForms; void UlozDoSouboru(string obsah) SaveFileDialog sfd = new SaveFileDialog(); if (sfdshowdialog() == DialogResultOK) // Vytvoříme datový proud k vybranému souboru: StreamWriter zapisovac = new StreamWriter(sfdFileName); // Zapíšeme do souboru: zapisovacwrite(obsah); // Datový proud uzavřeme: zapisovacclose();
396 Předdefinované dialogy 1040 ColorDialog, zjištění vybrané barvy Chceme-li zjistit barvu, jež byla vybrána v komponentě ColorDialog, použijeme vlastnost Color, která ji vrací jako instanci struktury SystemDrawingColor ColorDialog cd = new ColorDialog(); if (cdshowdialog() == DialogResultOK) Color vybranabarva = cdcolor; MessageBoxShow(stringFormat ( Hodnoty složek vybrané barvy jsou R: 0, G: 1, B: 2, vybranabarvar,vybranabarvag,vybranabarvab)); 1041 ColorDialog, zobrazení palety pro výběr libovolné barvy 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 SystemDrawingColor 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(); cdallowfullopen = true; cdcolor = SystemDrawingColorRed; cdshowdialog(); Obrázek 13 Nastavením vlastnosti AllowFullOpen na hodnotu true dialogu ColorDialog povolíme zobrazení palety barev
Předdefinované dialogy 397 1042 FontDialog, zjištění vybraného druhu písma Třída SystemWindowsFormsFontDialog 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 SystemDrawingFont void NastavStylPisma() FontDialog fd = new FontDialog(); if (fdshowdialog() == DialogResultOK) textbox1font = fdfont; 1043 FontDialog, nastavení barvy textu 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 fontdialog1showcolor = true; Pro získání vybrané barvy použijeme vlastnost Color, která tuto barvu vrací jako instanci struktury SystemDrawingColor fontdialog1showcolor = true; if (fontdialog1 ShowDialog() == DialogResultOK) textbox1font = fontdialog1font; textbox1forecolor = fontdialog1color; 1044 FontDialog, nastavení minimální a maximální velikosti písma 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(); fdminsize = 6; fdmaxsize = 20; fdshowdialog();
398 Předdefinované dialogy 1045 FolderBrowserDialog, zjištění cesty k vybrané složce Chceme-li zjistit cestu ke složce, jež byla vybrána pomocí dialogu FolderBrowserDialog, použijeme vlastnost SelectedPath FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbdshowdialog() == DialogResultOK) MessageBoxShow( Byla vybrána složka + fbdselectedpath); 1046 MessageBox, zobrazení zprávy Chceme-li zobrazit okno se zprávou, použijeme statickou metodu Show třídy System WindowsFormsMessageBox a jako argument dosadíme řetězec představující danou zprávu MessageBoxShow( 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 MessageBoxShow( Nějaká zpráva, Nadpis ); 1047 MessageBox, tlačítka 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 = MessageBoxShow( Je venku hezky?, Otázka, MessageBoxButtonsYesNo); 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 == DialogResultYes) MessageBoxShow( Odpověděli jste ano ); else MessageBoxShow( Odpověděli jste ne );