TOC

This article has been localized into Hungarian by the community.

Dialógusablakok:

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

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!