C# MessageBox.Show

Dialog boxes interrupt users. They force users to respond before further action is taken. This is necessary in some situations. MessageBox.Show is useful if a warning is important or a serious error occurred.

Examples of MessageBox.Show in Windows Forms

Example

To start, the MessageBox.Show method is a static method, which means you do not need to create a new MessageBox() anywhere in your code. Instead, you can simply type "MessageBox" and press the period, and then select Show.

Static Method

In this example, the MessageBox.Show method is used in the Form1_Load event handler. To make the Form1_Load event handler, create a new Windows Forms application and double-click on the window in the designer.

Windows Forms program that uses MessageBox: C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
	public Form1()
	{
	    InitializeComponent();
	}

	private void Form1_Load(object sender, EventArgs e)
	{
	    //
	    // The simplest overload of MessageBox.Show. [1]
	    //
	    MessageBox.Show("Dot Net Perls is awesome.");
	    //
	    // Dialog box with text and a title. [2]
	    //
	    MessageBox.Show("Dot Net Perls is awesome.",
		"Important Message");
	    //
	    // Dialog box with two buttons: yes and no. [3]
	    //
	    DialogResult result1 = MessageBox.Show("Is Dot Net Perls awesome?",
		"Important Question",
		MessageBoxButtons.YesNo);
	    //
	    // Dialog box with question icon. [4]
	    //
	    DialogResult result2 = MessageBox.Show("Is Dot Net Perls awesome?",
		"Important Query",
		MessageBoxButtons.YesNoCancel,
		MessageBoxIcon.Question);
	    //
	    // Dialog box with question icon and default button. [5]
	    //
	    DialogResult result3 = MessageBox.Show("Is Visual Basic awesome?",
		"The Question",
		MessageBoxButtons.YesNoCancel,
		MessageBoxIcon.Question,
		MessageBoxDefaultButton.Button2);
	    //
	    // Test the results of the previous three dialogs. [6]
	    //
	    if (result1 == DialogResult.Yes &&
		result2 == DialogResult.Yes &&
		result3 == DialogResult.No)
	    {
		MessageBox.Show("You answered yes, yes and no.");
	    }
	    //
	    // Dialog box that is right-aligned (not useful). [7]
	    //
	    MessageBox.Show("Dot Net Perls is the best.",
		"Critical Warning",
		MessageBoxButtons.OKCancel,
		MessageBoxIcon.Warning,
		MessageBoxDefaultButton.Button1,
		MessageBoxOptions.RightAlign,
		true);
	    //
	    // Dialog box with exclamation icon. [8]
	    //
	    MessageBox.Show("Dot Net Perls is super.",
		"Important Note",
		MessageBoxButtons.OK,
		MessageBoxIcon.Exclamation,
		MessageBoxDefaultButton.Button1);
	}
    }
}
Note

In Form1_Load, there are eight calls to the MessageBox.Show method using different overloads. The Form1_Load method is executed immediately after the program starts. When run, the program shows all the dialogs in sequential order.

And:The MessageBox.Show calls above call into different, overloaded implementations of the function based on the parameter lists.

OverloadVisual Studio logo

Typing in the options. The easiest way to use MessageBox.Show is to type in "MessageBox", and then press period, and then select Show. Next, Visual Studio shows a popup with the overload list. You can scroll through the overload lists.

Tip:For a parameter such as "MessageBoxButtons", type in "MessageBoxButtons" and press period to see all the options.

Also:You do not need to create a new MessageBoxButtons() object. This is an enum type, not a class.

EnumMethod call

The order of the parameters in the MessageBox.Show method calls is important. The parameter order gives the compiler the ability to apply overload resolution to call the best method in the method group.

Images:The image at the top of this document shows eight dialog boxes. These correspond to MessageBox.Show calls.

Note:Dialog box [6] only is shown when you specify certain options on the previous three dialogs. It tests the DialogResult enumeration.

DialogResult

DialogResult example

In Windows Forms, DialogResult is not an actual class but is a named constant from an enumeration. This means you cannot create a new DialogResult with the "new" operator. First assign your variable to the result of MessageBox.Show.

Next, type in "==" and Visual Studio will suggest options from the DialogResult enumeration. You can compare DialogResult like you would compare an integral type such as int. You can even use it in a switch.

DialogResult

Overloads

Steps

There are several more overloads of MessageBox.Show that are not shown in this document. They allow you to specify owner windows, which you do not need to do in simple cases. The IWin32Window owner parameter is an interface type.

Interface:An interface in the C# language is a contract that can be used to treat object instances in a more general way.

Interface

HelpNavigator parameter. The MessageBox.Show method also has overloads that allow you to specify Help options. In my experience, these options are not used most of the time, so I leave the specifics here up to MSDN.

User experience

Warning: exclamation mark

When designing programs for the end user, it is usually best to make non-critical errors as unobtrusive as possible. The Microsoft User Experience Guidelines provide many tips on dialog boxes.

Well-written, helpful error messages are crucial to a quality user experience. Poorly written error messages result in low product satisfaction, and are a leading cause of avoidable technical support costs. Unnecessary error messages break users' flow.

Error Messages: MSDN

Summary

Window: Windows Forms

MessageBox.Show is an effective approach to dialog boxes in Windows Forms. We looked at screenshots of the results of the MessageBox.Show method. We also tested the DialogResult enumeration.

And:There are many options here.
We can choose between many parameters to the static method.

So:The MessageBox.Show method is ideal for many simpler Windows Forms programs with less specific requirements.


C#: Windows