This article has been localized into Hungarian by the community.
A MessageBox dialógusablak
A WPF többféle dialógusablak használatát is lehetővé teszi az alkalmazásod számára, azonban a legegyszerűbb ezek közül egyértelműen a MessageBox. Ennek egyetlen célja, hogy átadjon egy üzenetet a felhasználónak, és egy vagy több lehetőséget nyújtson neki az üzenetre való válaszadásra.
A MessageBox a statikus Show() metódus meghívásával használható, amely különböző paraméterek sorát képes átvenni, annak érdekében, hogy az ablak az általad elképzeltek szerint jelenjen meg és működjön. Végigmegyünk az összes különböző formán ebben a cikkben, amelyben minden variáció a megfelelő MessageBox.Show() hívással, és az eredményezett képernyőképpel kerül majd reprezentálásra. A cikk végén egy teljes példát is találsz, minek segítségével az összes variációt tesztelheted.
Annak legegyszerűbb formájában a MessageBox csak egyetlen paramétert fogad, amely maga a megjelenítendő üzenet:
MessageBox.Show("Hello, world!");
MessageBox címsorral
A fönti példa lehet, hogy túl fapados - egy címsor az ablak tetején valószínűleg segítene ezen. Szerencsére a második, opcionális paraméter megengedi, hogy meghatározzuk az ablak címsorának tartalmát:
MessageBox.Show("Hello, world!", "My App");
MessageBox több gombbal
Alapesetben a MessageBox csak egy "Ok" gombbal rendelkezik, ám ezen lehet változtatni, ha esetleg egy kérdést szeretnél feltenni a felhasználónak, ahelyett, hogy csak valamilyen információ megjelenítését tűznéd ki célul. Ezenkívül vedd észre, hogy ebben az üzenetben több sort is használtam, amit a sortörés (\n) karakter igénybevételével értem el:
MessageBox.Show("This MessageBox has extra options.\n\nHello, world?", "My App", MessageBoxButton.YesNoCancel);
Azt, hogy milyen gombok jelennek meg az ablakon, a MessageBoxButton enumeráció egyik elemének használatával határozhatod meg - ebben az esetben egy Yes (Igen), egy No (Nem) és egy Cancel (Mégse) gomb jelenik meg. A következő - remélhetőleg elég egyértelműen értelmezhető - értékek használhatóak:
- OK
- OKCancel
- YesNoCancel
- YesNo
Na mármost, több választási lehetőség biztosítása esetén szükség van arra, hogy megtudd, melyik opciót választotta a felhasználó. Szerencsére, a MessageBox Show() metódusa mindig visszaad egy értéket a MessageBoxResult enumerációból, amelyet használhatsz erre. Íme egy példa:
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;
}
A MessageBox.Show() metódus által eredményül adott érték vizsgálatával most már lehetőséged nyílik reagálni a felhasználó választásaira, ahogyan az a példakódból és a képekből is látszik.
MessageBox ikonnal
A MessageBox egy negyedik paraméter használatával képes arra, hogy megjelenítsen egy előre meghatározott ikont az üzenet szövegétől balra esően:
MessageBox.Show("Hello, world!", "My App", MessageBoxButton.OK, MessageBoxImage.Information);
A MessageBoxImage enumeráció használatával, ikonok egész sora közül választhatod ki a különböző szituációknak éppen megfelelőt. Itt a teljes lista:
- Asterisk (ugyanaz, mint az Information)
- Error (Hiba)
- Exclamation (ugyanaz, mint a Warning)
- Hand (ugyanaz, mint az Error)
- Information (Információ)
- None (Nincs ikon)
- Question (Kérdés)
- Stop (ugyanaz, mint az Error)
- Warning (Figyelmeztetés)
A nevük sokat elmond arról, hogy hogyan is néznek ki, de ettől függetlenül nyugodtan kísérletezgess a különböző értékekkel vagy nézd meg ezt az MSDN cikket, amelyben minden értékhez szerepel magyarázat, sőt, még illusztráció is: http://msdn.microsoft.com/en-us/library/system.windows.messageboximage.aspx
MessageBox alapértelmezett választással
A MessageBox kijelöl egy gombot, mint alapértelmezett választás, amely gomb megnyomásra kerül abban az esetben, amennyiben a felhasználó egyszerűen lenyomja az Enter billentyűt a dialógusablak megjelenése után. Például, ha megjelenítesz egy MessageBox-ot a "Yes" (Igen) és "No" (Nem) gombokkal, a "Yes" lesz az alapértelmezett választás. Ezt a viselkedést azonban megváltoztathatod egy, a MessageBox.Show() metódusnak átadott ötödik paraméterrel:
MessageBox.Show("Hello, world?", "My App", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
Vedd észre a képen, hogy a "No" gomb kicsit ki van emelve, annak vizuális úton való közlésére, hogy ki van választva és megnyomásra kerül, ha az Enter vagy Space billentyű lenyomódik.
A teljes példa
Ahogy az ígérve lett, itt a teljes példakód, melynek részei a cikkben is szerepeltek:
<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);
}
}
}