MessageBox

Affichage d'une boite de dialogue

04/01/2009 12485 lectures 13 commentaires 4.47/5 (15 votes)
Avant de parler des contrôles mis à votre disposition par Visual Studio, nous allons aborder les MessageBox. Quand vous utilisez un programme et que celui-ci désire communiquer avec vous, il le fait via une MessageBox. En français, cela veut dire "Boite à message". Pour ceux qui ne voient pas de quoi je veux parler, voici une MessageBox :

Image


Les MessageBox représente un des seuls moyens dont vous disposez pour avertir l'utilisateur de vos programmes d'un événement donné (une erreur, la fin d'un processus ou autre). La classe MessageBox est une classe statique contenant une fonction importante : Show. Cette méthode possède 21 surcharges (nous ne verrons que les plus utilisées) et sert à afficher une MessageBox. Les arguments passés à cette fonction détermine l'apparence, le contenu et le comportement de votre MessageBox.

Créez un nouveau projet du type "Windows Forms Application". Commencez par renommer le fichier Form1.cs en FrmMessageBox.cs. Ce fichier est votre fenêtre et le nom qui lui est associé est également associé à votre classe. Il est donc conseillé de toujours donner un nom explicite à vos fenêtres. Une fois ceci fait, double-cliquez sur ce fichier pour l'ouvrir. Quand vous voyez votre fenêtre, double-cliquez dessus pour ouvrir la page de code. Deux lignes de codes s'implémentent automatiquement. Ne faites pas attention à ces lignes pour l'instant, nous expliquerons leur utilité dans le cours prochain. Sachez juste que cette fonction sera exécutée au lancement de votre programme. Tapez cette première ligne :



Ici, nous utilisons la fonction Show dans sa plus simple expression. Nous lui passons une chaîne de caractères qui sera affichée dans la MessageBox. Si vous exécutez votre programme, vous obtiendrez ceci :

Image


Comme vous le voyez, le code pour afficher un message est assez simple. Sachez que toute les surcharges de la fonction Show que nous allons voir existent en deux exemplaires. Une de ces deux surchages attend 1 paramètre en plus que l'autre, le parent de la MessageBox. Effectivement, la fonction Show dans la forme que l'on vient d'utiliser est la suivante :



Mais il existe également cette surcharge :



Cette surcharge fait exactement la même chose que la fonction avec la meme syntaxe sans le premier argument sauf qu'elle spécifie le parent de la MessageBox. Le premier argument est donc un objet implémentant l'interface IWin32Window. Si vous désirez afficher une MessageBox avec la form active en tant que parent, il suffira de faire :



Passons maintenant à la deuxième surcharge intéressante. Celle-ci permet de spécifier un titre à la MessageBox. Il suffit de rajouter un paramètre derrière celui désignant le contenu de la MessageBox :



Si vous exéctuez votre programme, vous verrez ceci :

Image


Cette fois, votre MessageBox contient un titre.

La troisième surchage que nous allons voir va nous permettre de chosir quel(s) bouton(s) nous allons afficher dans la MessageBox. Bien évidemment, nous ne pouvons pas mettre n'importe quel bouton, il existe donc une énumération de valeurs permettant d'indiquer quels boutons nous désirons afficher. Cette énumération se nomme MessageBoxButtons. Voici les différentes valeurs que cette énumération contient :

OK : Bouton OK
OKCancel : Boutons Ok et Annuler
AbortRetryIgnore : Boutons Abandon, Réessayer ou Ignorer
YesNoCancel : Boutons Oui, Non et Annuler
YesNo : Boutons Oui et Non
RetryCancel : Boutons Réessayer et Annuler

Voici comment afficher une MessageBox avec les boutons Oui et Non :



Ce qui aurait pour effet d'afficher :

Image


Cette fois, le bouton OK a été remplacé par les boutons Oui et Non. Nous verrons plus tard dans ce cours comment réagir selon le bouton cliqué. Passons d'abord à la prochaine surchage qui vous permettra de définir l'image affichée dans la MessageBox. Par défaut, il n'y en a pas. Cette image peut être ajoutée en faisant passer une valeur de l'énumération MessageBoxIcon en tant que paramètre de la fonction Show de la classe MessageBox. Voici les différentes valeurs de cette énumération :

None : Aucune image
Hand : Croix blanche sur fond rond et rouge
Question : Point d'interrogation blanc sur fond rond et bleu
Exclamation : Point d'exclamation noir sur fond triangulaire et jaune
Asterisk : I minuscule blanc sur fond rond et bleu
Stop : Voir Hand
Error : Voir Hand
Warning : Voir Exclamation
Information : Voir Asterisk

Voici donc comment utiliser cette énumération :



Cette ligne de code permettra d'afficher :

Image


La prochaine surchage consiste à définir quel bouton sera le bouton par défaut dans votre MessageBox. Bien évidemment, quand vous n'affichez qu'un seul bouton, il est inutile de définir ce bouton, mais lorsque vous affichez une MessageBox contenant les boutons Oui et Non, il est possible de spécifier que le bouton Non sera le bouton par défaut. Pour cela il suffit de faire ainsi :



Ici, nous devons utiliser l'énumération MessageBoxDefaultButton. Cette énumération contient 3 valeurs : Button1, Button2 et Button3. Sur ce coup, Microsoft a fait preuve d'orignalité... Il faut considérer que dans une MessageBox, le bouton le plus à gauche est le Button1, celui du milieu le Button2 et celui le plus à droite, le Button3. Il faut donc compter de gauche à droite. Ce principe s'applique également quand il n'y a que 2 boutons affichés. C'est pour cela que le code précédent affichera :

Image


Comme vous le voyez, étant donné qu'il n'y a que 2 boutons, le bouton Non correspond au Button2. La dernière surchage que nous allons voir permet de spécifier des options supplémentaires à la MessageBox. Pour cela, il suffit d'utiliser l'énumération MessageBoxOptions. Cette énumération contient 4 valeurs :

ServiceNotification : La MessageBox est affichée sur l'Active Desktop courant même si l'utilisateur n'est pas loggé sur l'ordinateur. Spécifie que la MessageBox est affichée depuis un service Windows Microsoft .NET pour informer l'utilisateur d'un événement.
DefaultDesktopOnly : La MessageBox est affichée sur le bureau par défaut.
RightAlign : Aligne le texte de la MessageBox à droite.
RtlReading : Modifie l'alignement de tous les éléments de la MessageBox.

Nous pouvons donc utiliser cette énumération de cette manière :



Pour voir ceci s'afficher :

Image


Magnifique n'est-ce pas ? Passons maintenant à la manière de récupérer l'option choisie par l'utilisateur. Effectivement, si vous n'affichez qu'un bouton Ok, il n'est pas difficile de savoir quel option aura choisit l'utilisateur, mais si vous affichez un bouton Oui et un bouton Non, il faut récupérer la valeur choisie par l'utilisateur. La fonction Show renvoit une valeur faisant partie de l'énumération DialogResult. Commencez donc par récupérer cette valeur de cette manière :



Ici, nous récupérons la valeur choisie par l'utilisateur dans la variable resultat. Ensuite, il suffit simplement de tester l'égalité entre cette variable et une des valeur de l'énumération DialogResult :



Ici, nous regardons si la valeur contenue dans resultat vaut la valeur No de l'énumération DialogResult. Vous l'aurez compris, cette énumération contient toute les valeurs pour tous les boutons affichables dans une MessageBox.

Voter :

13 commentaires

  • lowlow a dit:

    21/12/2011

    Merci beaucoup, très clair, très pédagogue ! ça m'a été très utile.

  • snylord a dit:

    02/11/2011

    très efficace, mais existe-t-il la possibilité de modifier l'apparence de cette fenêtre ?

  • Nik a dit:

    27/07/2011

    Merci ! Ça m'a bien servi.

  • safaa a dit:

    16/03/2011

    merci beaucoup c vraiment très interessant

  • safaa a dit:

    16/03/2011

    merci beaucoup c vraiment très interessant

  • Lord a dit:

    29/11/2010

    Merci pour ceci c'est vraiment très utile pour moi encore merci d'avoir poster ceci sur le net

  • Nico a dit:

    15/05/2010

    Merci beaucoup

  • infinity a dit:

    20/04/2010

    exactement ce qu'il me fallait :)

  • Jacky a dit:

    15/04/2010

    Ce site est le paradis des débutants en C#.

    Merci !!!

  • imen a dit:

    25/03/2010

    merci bcp pour ces info très utiles!!!

  • debutant a dit:

    04/02/2010

    simple et utile bravo

  • Inepsy a dit:

    12/01/2010

    Utile et efficace quand on utilise pas des masses les MessageBox et qu'un jour on en a besoin.
    Merci ^^

  • Caëla a dit:

    11/12/2009

    Merci beaucoup c'est très utile surtout pour une débutante comme moi!!! :-)

Ajouter un commentaire