This article is currently in the process of being translated into Croatian (~96% done).
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);
}
}
}