// from www.danielmoth.com/Blog/ public enum MyMessageBoxResult { Button1, Button2, None } public static class MyMessageBox { /// /// 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 MyMessageBoxResult Show(string messageBoxText, string caption, string button1, string button2) { int? returned = null; using (var mre = new System.Threading.ManualResetEvent(false)) { string[] buttons; if (button2 == null) buttons = new string[] { button1 }; else buttons = new string[] { button1, button2 }; Microsoft.Xna.Framework.GamerServices.Guide.BeginShowMessageBox( caption, messageBoxText, buttons, 0, // can choose which button has the focus Microsoft.Xna.Framework.GamerServices.MessageBoxIcon.None, // can play sounds result => { returned = Microsoft.Xna.Framework.GamerServices.Guide.EndShowMessageBox(result); mre.Set(); // could have done it all without blocking }, null); mre.WaitOne(); } if (!returned.HasValue) return MyMessageBoxResult.None; else if (returned == 0) return MyMessageBoxResult.Button1; else if (returned == 1) return MyMessageBoxResult.Button2; else return MyMessageBoxResult.None; } }