Créer une MessageBox personnalisé, sans sons et sans vibrations

Bonjour, Je suis sur que certains d’entre vous se sont déjà dis qu’ils aimeraient une MessageBox qui ne produise pas de son, ni de vibrations (comme Microsoft l’utilise dans certaines applications). Avec le control MessageBox de Silverlight, il n’est pas possible de faire cela. De plus, il serait intéressant de pouvoir faire des boutons personnalisé sur notre MessageBox … et encore une foi avec Silverlight ce n’est pas possible. Pour se faire voici un petit tutorial ou nous allons créer un control personnalisé grâce aux services XNA. Pour se faire, créer simplement une nouvelle classe que nous allons nommé ‘SilenceMessageBox’ et dont la structure est la suivante :

namespace WindowsPhoneMessageboxExample.Controls { public enum SilenceMessageBoxResult { LeftButton, RightButton, None } public static class SilenceMessageBox { ///  /// Displays a message box that contains the specified text, title bar caption, and two response buttons. ///  ///The message to display. ///The title of the message box. ///The title of the first button. ///The title of the second button. Pass null if you only want one button. /// A value that indicates the user's response to the message. public static SilenceMessageBoxResult Show(string messageBoxText, string caption, string LeftButton, string RightButton) { int? returned = null; using (var mre = new System.Threading.ManualResetEvent(false)) { string[] buttons; if (RightButton == null) buttons = new string[] { LeftButton }; else buttons = new string[] { LeftButton, RightButton }; Microsoft.Xna.Framework.GamerServices.Guide.BeginShowMessageBox( caption, messageBoxText, buttons, 0, Microsoft.Xna.Framework.GamerServices.MessageBoxIcon.None, result => { returned = Microsoft.Xna.Framework.GamerServices.Guide.EndShowMessageBox(result); mre.Set(); }, null); mre.WaitOne(); } if (!returned.HasValue) return SilenceMessageBoxResult.None; else if (returned == 0) return SilenceMessageBoxResult.LeftButton; else if (returned == 1) return SilenceMessageBoxResult.RightButton; else return SilenceMessageBoxResult.None; } } }

PS : Il ne faut pas oublier d’ajouter la référence ‘Microsoft.Xna.Framework.GamerServices’ au projet. Maintenant, rien de plus simple quand vous voulez créer une MessageBox personnalisé, on va faire appel à notre classe ‘SilenceMessageBox’ :

 if (SilenceMessageBox.Show("Mon message", "Mon titre", "Je valide", "Pas d'accord") == SilenceMessageBoxResult.LeftButton) { // Ecrire en console debug Debug.WriteLine("Ok, c'est validé !"); }

Nous avons donc la structure .Show(“Votre Message”, “Votre titre”, “Message du bouton de gauche”, “Message du bouton de droite”) SilenceMessageBox Pour ceux qui préfère un bel exemple fonctionnel, je mets les sources d’un projet exemple ci dessous : Code source Source : http://www.danielmoth.com/Blog/GuideBeginShowMessageBox-Wrapper.aspx

No Comments

Post a Comment