TOC

This article has been localized into Danish by the community.

Dialoger:

MessageBox

WPF tilbyder adskillige dialoger til din applikation som kan udnyttes, men den simpleste er helt bestemt MessageBox. Dens eneste formål er at vise en meddelelse til brugeren og så tilbyde en elelr flere måder for brugeren at svare på meddelelsen.

MessageBox benyttes ved kald til den statiske Show()-metode som kan optage et område med forskellige parametre der således kan blive i stand til at vise og opføre sig på den måde du ønsker det. Vi vil gennemgå alle de forskellige former i denne artikel med hver variation der repræsenteres af MessageBox.Show()-linjen og give et screenshot af resultatet.I slutningen af artiklen, kan du finde et komplet eksempel som lader dig teste alle variationerne

I sin simpleste form, tager MessageBox blot en enkelt parameter som er den meddelelse der skal vises:

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

MessageBox med en titel

Det ovennævnte eksempel kunne være et alt for skrabet minimum - en titel i vinduets visning af meddelelsen vil formodentlig hjælpe. Heldigvis tillader den anden og valgfri parameter os at angive titlen.

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

MessageBox med ekstra knapper

Som standard har MessageBox kun en OK knap, men dette kan ændres, hvis du vil stille din bruger et spørgsmål og ikke bare vise en smule information. Bemærk også, hvordan jeg bruger flere linjer i beskeden ved at bruge et linjeskifttegn (\n):

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

Du kan kontrollere hvilke knapper, der vises, ved at bruge en værdi fra MessageBoxButton enumerationen - i dette tilfælde bliver en Yes, No og Cancel knap medtaget. De følgende værdier, som burde være selvforklarende, kan benyttes:

  • OK
  • OKCancel
  • YesNoCancel
  • YesNo

Med flere mulige valg har du brug for en måde at se hvad, brugeren valgte, og heldigvis returnerer MessageBox.Show() metoden altid en værdi fra MessageBoxResult enumerationen, som du kan bruge. Her er et eksempel:

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

Ved at se på returværdien fra MessageBox.Show() metoden, kan du reagere på brugersvaret, som vist i kodeeksemplet og på skærmbillederne.

MessageBox med et ikon

MessageBox har mulighed for at vise et prædefineret ikon til venstre for tekstbeskeden ved at bruge en fjerde parameter:

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

Ved hjælp af MessageBoxImage enumerationen kan du vælge mellem en række af ikoner til forskellige situationer. Her er den komplette liste:

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

Navnene siger en del om hvordan, de ser ud, men prøv at eksperimentere med de forskellige værdier eller kig på denne MSDN artikel, hvor hver værdi er forklaret og endda illustreret: http://msdn.microsoft.com/en-us/library/system.windows.messageboximage.aspx

MessageBox med et standardvalg

MessageBox vil vælge en knap som standardvalg, som er den knap, der anvendes, når brugeren trykker Enter mens, dialogen er åben. F.eks. hvis du viser en MessageBox med en "Yes" og en "No" knap, vil "Yes" være standardvalget. Du kan dog ændre denne opførsel ved hjælp af en femte parameter til MessageBox.Show() metoden:

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

Bemærk på skærmbilledet hvordan "No" knappen er en smule forhøjet for visuelt at indikere, at den er valgt og vil blive brugt, hvis Enter eller Space tasterne trykkes.

Det komplette eksempel

Som lovet er her det komplette eksempel brugt i denne artikel:

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