TOC

This article is currently in the process of being translated into Slovak (~99% done).

Dialógy:

The MessageBox

WPF ponúka niekoľko dialógových okien, ktoré môže vaša aplikácia využiť, ale najjednoduchším je určite MessageBoc. Jeho jediným účelom je zobraziť užívateľovy správu a potom ponúknuť jeden alebo niekoľko spôsobov ako na danú správu odpovedať.

MessageBox sa použije zavolaním statickej metódy Show(), ktorá môže obsahovať celý rad rôzdnych nastavení, aby mohla vyzerať a aj sa správať ako potrebujete. My si prejdeme všetky formy v tomto článku, pričom každá variácia je reprezentovaná riadkom MessageBox.Show() a snímkou výsledku. Na konci článku nájdete kompletný príklad, ktorý vám umožní otestovať všetky variácie.

MessageBox v najjednoduchšej podobe zoberie iba jeden parameter, ktorým je správa na zobrazenie:

MessageBox.Show("Hello, world!");

MessageBox s titulkom

Vyššie uvedený príklad by mohol byť trochu dosť holý- titulok v okne zobrazujúci sprvávu by pomohol. Našťastie druhým voliteľným parameter nám umožňuje zadať názov:

MessageBox.Show("Hello, world!", "My App");

MessageBox s extra tlačítkami

V defaultnom nastavení má MessageBox len jedno tlačidlo Ok, ale to môže byť zmenené, ak chceme užívateľovy položiť otázku a nie len ukázať časť informácie. Všimite si ako používam viac riadkov v správe, vďaka používanie znaku zalomenia riadku (\n):

MessageBox.Show("This MessageBox has extra options.\n\nHello, world?", "My App", MessageBoxButton.YesNoCancel);

Vy kontrolujete, ktoré tlačidlá sa májú zobraziť pomocou nastavenia hodnoty z výčtu MessageBoxButton - v tomto prípade sú zahrnuté tlačídlá, Áno, Nie, Zrušiť. Môžu byť použité nasledujúce hodnoty, ktoré by mali byť samovysvetľujúce:

  • OK
  • OKCancel
  • YesNoCancel
  • YesNo

Teraz z viacerými možnosťami potrebujete spôsoby, ako vidieť, čo si užívateľ vybral, našťastie metóda MessageBox.Shov() vždy vracia hodnotu do MessageBoxResult, ktorá môžete použiť. Tu je príklad:

MessageBoxResult result = MessageBox.Show("Would you like to greet the world with a \"Hello, world\"?", "My App", MessageBoxButton.YesNoCancel);
switch(result)
{
	case MessageBoxResult.Yes:
		MessageBox.Show("Hello to you too!", "My App");
		break;
	case MessageBoxResult.No:
		MessageBox.Show("Oh well, too bad!", "My App");
		break;
	case MessageBoxResult.Cancel:
		MessageBox.Show("Nevermind then...", "My App");
		break;
}

Kontrolou výslednej hodnoty medódy MessageBox.Shov() môžete teraz reágovať na výber užívateľa, ako je vidieť v kóde tohto príkladu, aj na screenshotoch.

MessageBox s ikonou

MessageBox má možnosť zobraziť preddefinovanú ikonu naľavo do textovej správy, pomocou požitia štvrtého parametra:

MessageBox.Show("Hello, world!", "My App", MessageBoxButton.OK, MessageBoxImage.Information);

Pomocou výčtu MessageBoxImage si môžete vybrať medzi ikonami pre rôzne situácie. Tu je kompletný zoznam:

  • Asterisk (hviezdička)
  • Error (chyba)
  • Exclamation (zvolanie)
  • Hand (ručné)
  • Information (Informácia)
  • None (nič/defaultne nastavené)
  • Question (otázka)
  • Stop (zastaviť)
  • Warning (upozornenie)

Názvy by mali hovoriť veľa o tom ako vyzrerajú, ale môžete voľne experimentovať s rôzdnymi hodonotami, alebo sa pozrieť na článok od MSDN, kde je každá hodnota vysvetlená a aj ilustrovaná: http://msdn.microsoft.com/en-us/library/system.windows.messageboximage.aspx

MessageBox s predvolenou možnosťou

MessageBox môže vybrať predvolené tlačidlo, kroeé sa potom vyvolá v prípade, že používateľ strláčí kláves Enter. Na príklad, ak zobrazujete MessageBox s tlačidlom "Áno" a "Nie", prevolenou odpoveďou bude "Áno". Avšak toto správanie môžete zmeniť pomocou piateho parametru metódy MessageBox.Show():

MessageBox.Show("Hello, world?", "My App", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);

Všimnite si na snímke obrazovky, ako je tlačidlo „Nie“ mierne zvýšené, aby bolo vizuálne naznačené, že je vybraté a ak sa stlačí tlačidlo Enter alebo medzera , bude vyvolané.

Úplný príklad

Ako som sľúbil, tu je úplný príklad použitý v tomto článku:

<Window x:Class="WpfTutorialSamples.Dialogs.MessageBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MessageBoxSample" Height="250" Width="300">
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <StackPanel.Resources>
            <Style TargetType="Button">
                <Setter Property="Margin" Value="0,0,0,10" />
            </Style>
        </StackPanel.Resources>
        <Button Name="btnSimpleMessageBox" Click="btnSimpleMessageBox_Click">Simple MessageBox</Button>
        <Button Name="btnMessageBoxWithTitle" Click="btnMessageBoxWithTitle_Click">MessageBox with title</Button>
        <Button Name="btnMessageBoxWithButtons" Click="btnMessageBoxWithButtons_Click">MessageBox with buttons</Button>
        <Button Name="btnMessageBoxWithResponse" Click="btnMessageBoxWithResponse_Click">MessageBox with response</Button>
        <Button Name="btnMessageBoxWithIcon" Click="btnMessageBoxWithIcon_Click">MessageBox with icon</Button>
        <Button Name="btnMessageBoxWithDefaultChoice" Click="btnMessageBoxWithDefaultChoice_Click">MessageBox with default choice</Button>
    </StackPanel>
</Window>
using System;
using System.Windows;

namespace WpfTutorialSamples.Dialogs
{
	public partial class MessageBoxSample : Window
	{
		public MessageBoxSample()
		{
			InitializeComponent();
		}

		private void btnSimpleMessageBox_Click(object sender, RoutedEventArgs e)
		{
			MessageBox.Show("Hello, world!");
		}

		private void btnMessageBoxWithTitle_Click(object sender, RoutedEventArgs e)
		{
			MessageBox.Show("Hello, world!", "My App");
		}

		private void btnMessageBoxWithButtons_Click(object sender, RoutedEventArgs e)
		{
			MessageBox.Show("This MessageBox has extra options.\n\nHello, world?", "My App", MessageBoxButton.YesNoCancel);
		}

		private void btnMessageBoxWithResponse_Click(object sender, RoutedEventArgs e)
		{
			MessageBoxResult result = MessageBox.Show("Would you like to greet the world with a \"Hello, world\"?", "My App", MessageBoxButton.YesNoCancel);
			switch(result)
			{
				case MessageBoxResult.Yes:
					MessageBox.Show("Hello to you too!", "My App");
					break;
				case MessageBoxResult.No:
					MessageBox.Show("Oh well, too bad!", "My App");
					break;
				case MessageBoxResult.Cancel:
					MessageBox.Show("Nevermind then...", "My App");
					break;
			}
		}

		private void btnMessageBoxWithIcon_Click(object sender, RoutedEventArgs e)
		{
			MessageBox.Show("Hello, world!", "My App", MessageBoxButton.OK, MessageBoxImage.Information);
		}

		private void btnMessageBoxWithDefaultChoice_Click(object sender, RoutedEventArgs e)
		{
			MessageBox.Show("Hello, world?", "My App", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
		}
	}
}
This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!