Java týden Java týden
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací
Pouze tento týden slevy až 80 % na programování v Javě

Lekce 23 - WPF - Prvky pro menu a dialogy

C# .NET Formuláře WPF WPF - Prvky pro menu a dialogy

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, WPF - Prvky pro zobrazení dat, jsme si prošli formulářové prvky WPF pro zobrazování dat. V dnešním WPF tutoriálu se podíváme na menu a dialogy.

Prvky pro vytváření menu

Jedny z dalších prvků WPF jsou prvky, pomocí nichž lze vytvářet menu. Jsou to tyto.

  • Menu
  • MenuItem

Menu

Prvek Menu, společně s MenuItem, slouží k vytvoření rozbalovací nabídky, tzv. aplikačního menu pod záhlavím okna. Může se ve formuláři vyskytovat pouze jednou a vytváří se podobně jako u TreeView vnořováním prvků MenuItem do sebe.

Menu v C# .NET WPF

Struktura elementů v XAML má na začátku element <Menu> a samozřejmě končí jeho uzavřením </Menu>. Mezi tím se definují jednotlivé volby pomocí prvku <MenuItem>. Ty pak v sobě mají odkaz na přiřazenou metodu. V hlavičce každé MenuItem je text, ve kterém lze pomocí podtržítka definovat tzv. "horkou klávesu", což je klávesová zkratka. Jednotlivé volby pak lze volat pomocí stisku kláves Alt a této "horké klávesy" (příslušný znak na klávesnici). Součástí hlavičky může být např. obrázek, zaškrtávátko apod. (viz projekt UkazkaMenu).

Vlastnosti

  • Items - položky (strukturovaný záznam)
  • ItemsSource - zdroj dat (kolekce strukturovaných záznamů)
  • Header - hlavička příslušné volby (text, odkaz na metodu, Image, ...)

Události

  • Click - při kliknutí na volbu se spustí přiřazená metoda

Příklad

XAML
<Menu BorderBrush="Black" Background="Transparent"
   FontFamily="Tahoma" Foreground="WhiteSmoke" FontSize="14">
   <MenuItem Header="_Soubor">
      <MenuItem Header="_Nový soubor..." Click="NovySoubor"
         Foreground="Black">
         <MenuItem.Icon>
            <Image Source="Obr/novy.png" Height="16" Width="16" />
         </MenuItem.Icon>
   </MenuItem>
. . .
</Menu>
C#

Událost Click:

private void NovySoubor(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Byla vybrána volba Nový soubor");
}

Dialogy

Součástí předdefinovaných prvků jsou i následující dialogy:

  • MessageBox
  • OpenFileDialog
  • SaveFileDialog

MessageBox

Tento dialog může zastávat funkci oznámení nebo může sloužit jako rozhodovací prvek k řízení aplikace, kdy se v dialogovém okně můžeme dotázat, zda se má např. smazat vybraný záznam a podle volby Ano nebo Ne spustit příslušné procedury.

Dialog MessageBox v C# .NET WPF

Vlastnosti

Žádné důležité.

Metody

  • Show() - Zobrazí dialog. Tato metoda vrací hodnotu vybrané volby (typ MessageBoxResult). Na základě vrácené hodnoty se pak mohou spouštět příslušné metody. Metoda Show() má následující parametry:
    • messageBoxText - nějaké oznámení nebo dotaz. Tento text je povinný.
    • caption - titulek okna

Do dalších přetížení metody můžeme dále specifikovat jako parametry:

  • MessageBoxButton - volba tlačítek
    • OK
    • OKCancel
    • YesNo
    • YesNoCancel
  • MessageBoxImage - zobrazená ikona
    • Asterisk
    • Error
    • Exclamation
    • Hand
    • Information
    • None
    • Question
    • Stop
    • Warning
  • MessageBoxResult - návratový kód
    • Cancel
    • No
    • None
    • OK
    • Yes
  • MessageBoxOptions - nastavuje vzhled okna. Zajímavé jsou tyto hodnoty:
    • RightAlign - text v okně je zarovnán vpravo
    • RtlReading - prohodí pozice prvků v okně. Tzn., že titulek je umístěn vpravo, ikona zavření okna vlevo, zadaný text je vlevo, vybraná ikona vpravo a tlačítka mají prohozené pořadí.

Příklad

Dialogy otevíráme pouze z C# kódu.

C#
private void Zobraz(object sender, RoutedEventArgs e)
{
   MessageBoxResult status = MessageBox.Show("Nějaký text.", "Titulek",
      MessageBoxButton.YesNoCancel,
      MessageBoxImage.Information,
      MessageBoxResult.Cancel);

   switch (status)
   {
      case MessageBoxResult.None:
         // nějaký kód
         break;
      case MessageBoxResult.OK:
         // nějaký kód
         break;
      case MessageBoxResult.Cancel:
         // nějaký kód
         break;
      case MessageBoxResult.Yes:
         // nějaký kód
         break;
     case MessageBoxResult.No:
         // nějaký kód
         break;
     default:
         break;
   }
}

OpenFileDialog

Tento dialog je stejný jako Průzkumník ve Windows a slouží k výběru požadovaného souboru.

Vlastnosti

Nejdůležitějšími vlastnostmi jsou:

  • FileName – vrací jméno vybraného souboru
  • Filter – slouží k filtrování zobrazených souborů. Filtr se skládá z popisné části a příslušné přípony, oddělené svislicí (viz Příklad)
  • InitialDirectory– nastavuje počáteční adresář, který má dialog otevřít

Příklad

C#

V následujícím příkladu je ukázka načtení souboru do prvku RichTextBox. Prvek je pojmenován rtbxSoubor:

private void DialogOpen(object sender, RoutedEventArgs e)
{
   OpenFileDialog soubor = new OpenFileDialog();
   soubor.Filter = "Textové soubory (*.txt;*rtf)|*.txt;*rtf";
   if (soubor.ShowDialog() == true)
   {
      rtbxSoubor.Document.Blocks.Clear();
      FileStream fileStream = new FileStream(soubor.FileName, FileMode.Open);
      TextRange range = new TextRange(rtbxSoubor.Document.ContentStart,rtbxSoubor.Document.ContentEnd);
      FileInfo fi = new FileInfo(soubor.FileName);
      string pripona = fi.Extension.ToUpper();
      if (pripona.Equals(".TXT"))
      {
         range.Load(fileStream, DataFormats.Text);
      }

      if (pripona.Equals(".RTF"))
      {
         range.Load(fileStream, DataFormats.Rtf);
      }

      if (!(pripona.Equals(".HTML") || pripona.Equals(".TXT")))
      {
         MessageBox.Show("Tento formát není podporován.", "Upozornění",
         MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK);
      }
   }
   else
   {
      MessageBox.Show("Bylo kliknuto na Storno");
   }
}

SaveFileDialog

Tento dialog je také stejný jako Průzkumník ve Windows a slouží pro změnu k uložení požadovaného souboru.

Vlastnosti

Nejdůležitější vlastnosti jsou:

  • FileName – vrací jméno vybraného souboru
  • Filter – slouží k filtrování zobrazených souborů. Filtr se skládá z popisné části a příslušné přípony, oddělené svislicí (viz Příklad)
  • InitialDirectory – nastavuje počáteční adresář, který má dialog otevřít

Příklad

C#

V následujícím příkladu je ukázka uložení text z prvku RichTextBox do souboru. Prvek je pojmenován rtbxSoubor:

private void DialogSave(object sender, RoutedEventArgs e)
{
   SaveFileDialog soubor = new SaveFileDialog();
   soubor.Filter = "TXT soubor(*.txt)|*.txt|RTF soubor(*.rtf)|*.rtf";
   if (soubor.ShowDialog() == true)
   {
      FileStream fileStream = new FileStream(soubor.FileName, FileMode.Create);
      TextRange range = new TextRange(rtbxSoubor.Document.ContentStart, rtbxSoubor.Document.ContentEnd);
      range.Save(fileStream, DataFormats.Text);
   }
   else
   {
      MessageBox.Show("Bylo kliknuto na Storno");
   }
}

Pozn.: V příloze článku je uveden i příklad pro výběr adresáře.

V příští lekci, WPF - Kontejnerové prvky, nás čekají kontejnerové prvky.


 

Stáhnout

Staženo 2x (1.91 MB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Článek pro vás napsal Petr Pospíšil
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Miniatura
Předchozí článek
WPF - Prvky pro zobrazení dat
Miniatura
Všechny články v sekci
Okenní aplikace v C# .NET WPF
Miniatura
Následující článek
WPF - Kontejnerové prvky
Aktivity (2)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!