TOC

This article has been localized into French by the community.

Dialogs:

La MessageBox

WPF permet l'utilisation plusieurs types de boite de dialogues par vos applications. La plus simple à mettre en œuvre est la MessageBox, dont le but est d'afficher un message, et de fournir un ou plusieurs moyens de réponse à l'utilisateur.

La MessageBox est habituellement appelée par la méthode statique Show() qui offre une plage de paramètres différents pour s'afficher et se comporter de la manière que vous voulez. Nous allons parcourir toutes les formes dans cet article, chacune variation étant présentée par la ligne MessageBox.Show() et une copie d'écran du résultat. A la fin de l'article, vous trouverez un exemple complet qui vous permettra de toutes les tester.

Dans sa forme la plus simple, la MessageBox() prend un paramètre unique, qui est le message à afficher:

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

MessageBox avec titre

L'exemple ci-dessus est peut être un peu simpliste - un titre sur la fenêtre affichant le message aiderait sûrement. Heureusement, un second paramètre optionnel permet de spécifier le titre:

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

MessageBox avec boutons supplémentaires

Par défaut, la MessageBox dispose uniquement d'un bouton Ok, mais cela peut être changé dans le cas où vous voulez poser une question à l'utilisateur et pas uniquement afficher une information. Notez aussi comment j'utilise un message multiligne avec le caractère de saut de ligne (\n):

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

Vous gérez les boutons à afficher en utilisant une des valeurs du MessageBoxButton enumeration - dans ce cas, des boutons Oui, Non et Annuler sont proposés. Les valeurs suivantes, qui s'expliquent d'elles même, peuvent être utilisées :

  • OK
  • OKCancel : OK Annuler
  • YesNoCancel : Oui Non Annuler
  • YesNo : Oui Non

Maintenant avec plusieurs choix, vous aurez besoin de savoir ce que l'utilisateur a choisi, et heureusement, la méthode MessageBow.Show() retourne toujours l'énumération MessageBoxResult que vous pouvez utiliser. Voici un exemple:

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

En traitant la valeur retournée par la méthode MessageBow.Show(), vous pouvez maintenant réagir au choix de l'utilisateur, comme montré dans l'exemple et sur les copies d'écran.

MessageBox avec icône

La MessageBox offre la possibilité d'afficher une icône prédéfinie à la gauche du message en utilisant le quatrième paramètre :

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

En utilisant l'énumération MessageBoxImage vous pouvez choisir différents icônes suivant le contexte. En voici la liste complète :

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

Les noms sont assez explicites, mais n'hésitez pas a expérimenter les différentes valeurs ou à aller voir l'article MSDN suivant où toutes les valeurs sont expliquées et illustrées : http://msdn.microsoft.com/en-us/library/system.windows.messageboximage.aspx

Une MessageBox avec le bouton par défaut

La MessageBox définie un bouton par défaut qui est exécuté dans le cas ou l'on tape Entrée une fois la boite de dialogue affichée. Comme exemple, si vous affichez un MessageBox avec les bouton "Yes" et "No", l'action par défaut est le "Yes". Vous pouvez changer ce comportement à l'aide d'un cinquième paramètre de la méthode MessageBox.Show() comme ci-dessous :

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

Remarquez comme le bouton "No" est en sur-brillance pour indiquer qu'il est sélectionné et qu'il sera exécuté si la touche Entrée ou Espace est enfoncée.

L’exemple complet :

Comme promis, voici l'exemple complet de cet article :

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