TOC

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

Dialogs:

The MessageBox

WPF nudi nekoliko dijaloga koje vaša aplikacija može koristiti, ali je sigurno najjednostavniji MessageBox. Njegova jedina svrha je prikazati poruku korisniku i onda mu ponuditi nekoliko načina na koje korisnik može na nju odgovoriti.

MessageBox se koristi pozivom statičke metode Show(), koja može primiti niz različitih parametara, kako kako bi izgledala i ponašala se onako kako želite. Proći ćemo kroz sve razne oblike u ovom članku i svaka varijacija će biti predstavljena MessageBox.Show() linijom i snimkom zaslona rezultata. Na kraju članka, može naći cjeloviti primjer koji će vam omogućiti testiranje svih varijacija.

U svom najjednostavnijem obliku, MessageBox prima samo jedan parametar, a to je poruka koju se želi prikazati:

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

MessageBox s naslovom

Gornji primjer možda je previše oskudan - naslov na prozoru koji prikazuje poruku vjerojatno bi bio od pomoći. Srećom, drugi, opcionalni parametar nam omogućava da definiramo naslov:

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

MessageBox s dodatnim gumbima

Prema zadanim postavkama, MessageBox ima samo Ok gumb, ali to se može promijeniti ako želite postaviti neko pitanje korisniku, a ne samo prikazati informaciju. Također primijetite da imam više redaka u poruci, koristeći znak za prijelom reda (\n):

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

Vi upravljate time koje će se gumbi prikazati pomoću vrijednosti iz MessageBoxButton enumeracije - u ovom slučaju uključeni su Yes, No i Cancel gumbi. Na raspolaganju su vrijednosti koje se mogu koristiti i koje su same po sebi razumljive:

  • OK
  • OKCancel
  • YesNoCancel
  • YesNo

S višestrukim izborom, trebate način da vidite što je korisnik odabrao, a srećom, metoda MessageBox.Show() uvijek vraća vrijednost iz enumeracije MessageBoxResult koju možete koristiti. Evo primjera:

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;
}

Provjerom povratne vrijednosti metode MessageBox.Show() sada možete reagirati na odabir korisnika što se vidi iz primjera koja kao i iz snimki zaslona.

MessageBox s ikonom

MessageBox ima mogućnost prikazati zadanu ikonu s lijeve strane teksta poruke. To se postiže pomoću četvrtog parametra:

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

Pomoću MessageBoxImage enumeracije, možete birati između raznih ikona za različite situacije. Ovo je potpuni popis:

  • Asterisk
  • Error
  • Exclamation
  • Hand
  • Information
  • None
  • Question
  • Stop
  • Warning

Imena dovoljno govore o tome kako bi ikone trebale izgledati, ali slobodno eksperimentirajte s raznim vrijednostima i pogledajte ovaj članak s MSDN-a gdje je svaka vrijednost objašnjena i ilustrirana: http://msdn.microsoft.com/en-us/library/system.windows.messageboximage.aspx

MessageBox s podrazumijevanom opcijom

MessageBox će odabrati jedan gumb kao zadani izbor, koji će biti pozvan u slučaju da korisnik samo pritisne Enter nakon što se dijalog prikaže. Na primjer, ako prikažete MessageBox s gumbima 'Yes' i 'No', 'Yes' će biti podrazumijevani odgovor. Ovo ponašanje, međutim, možete promijeniti koristeći peti parametar metode MessageBox.Show():

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

Primijetite na snimci zaslona kako je "No" dugme malo izdignuto kako bi se vizualno ukazalo da je odabrano i da će biti pozvano ako se pritisne Enter ili Space dugme.

Cjeloviti primjer

Kao što je obećano, ovo je cjeloviti primjer svega korištenog u ovom članku:

<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!