Creating a Custom Message Box

Download Source Code

The Windows message box is a sufficient means to display messages to the user. For many applications, the message box will work fine; however, there are times when the message box is limited. For example, suppose you wanted to display a lot of text and therefore wanted a message box that was sizable or even scrollable by the user. There are also times when you might develop an application with a great user interface but it is ruined by the dull Windows message box.

Fortunately, it is very easy for C# developers to develop a custom message box of their own to incorporate it into their applications. In this article, I will explain how to create a simple OK/Cancel message box. I will also improve on the message box by adding a timer feature.

You’re now going to create a custom message box. Create a new Windows Application titled MyMessageBox. Use the following table to set the properties for the form.

Property Value
Size 400,150
FormBorderStyle FixedToolWindow
ShowInTaskBar False
StartPosition CenterScreen

Place two buttons on the form. Use the following table to set the properties for button1.

Property Value
Name btnOk
Location 217,86
Size 84,27
Text OK

Now, use the following table to set the properties for button2.

Property Value
Name btnCancel
Location 307,86
Size 84,27
Text Cancel

Finally. place a label on the form. Use the following table to set the properties for label1.

Property Value
Name lblMessage
Location 9,7

The Code

The code for the custom message box is quite simple. First, you need to declare a variable called Button_id; this variable will hold a number—either 1 or 2. If the user clicks the OK button, this variable will be set to 1; if the user clicks the Cancel button, the variable will be set to 2. This variable will be used to determine which button was clicked. The variable is declared as type string and is a static variable.

You also need to define an object of MyMessageBox; it is also defined as static. Both should be declared just under the public partial class:

static MyMessageBox newMessageBox;
static string Button_id;

The Windows C# MessageBox Class has a Show() method. For your custom message box, you will create a ShowBox() method that will be an overloaded method. This overloaded method will take one or two parameters. This method also will be used as an Accessor. This means that not only can you use the method to set the message on our message box but you also can get a result back. Thats is, you can determine which button was clicked by the user (OK/Cancel). Following is the code for the ShowBox() method.

public static string ShowBox(string txtMessage)
{
   newMessageBox = new MyMessageBox();
   newMessageBox.label1.Text = txtMessage;
   newMessageBox.ShowDialog();
   return Button_id;
}

The preceding is the first of the two overloaded ShowBox() methods. It takes one parameter; this parametter is the message to be displayed on your message box. Previously, you defined an ojbect ‘newMessageBox’ from your MyMessageBox class; now, in the ShowBox() method, you use the new keyword to instaniate the object.

Now that an object of MyMessageBox Class is created, you can set the label of the message box. After setting the message, you need to show the message box; you use the ShowDialog() method to show the message box as a dialog box. This means that when your message box is displayed, the user will not be able to interact with the form that created the message box until the user makes a choice—either OK, Cancel, or the X Close button.

Finally, you use the return statement to return a value back to the calling method. This value, as mentioned earlier, is either 1, 2, or null if the X button is clicked.

The second overloaded method of the ShowBox() method takes two parameters. The first is the message; the second is the title. The title is used to set the message box’s title. If the ShowBox() method is used with only one parameter, the message box’s title will be that of the Class name unless changed.

Finally, you need to code both the OK and Cancel buttons. The code behind these two buttons is very simple. Both the bottoms need to dispose of the message box; however, before they dispose of the message box, they both need to store a value in the Button_id variable. After storing a value into the variable, the message box then is disposed of and execution returns to the calling method. The value stored in the Button_id variable is also returned. This will allow the user to preform some processing. The complete code follows.

static MyMessageBox newMessageBox;
static string Button_id;

public static string ShowBox(string txtMessage)
{
   newMessageBox = new MyMessageBox();
   newMessageBox.label1.Text = txtMessage;
   newMessageBox.ShowDialog();
   return Button_id;
}

public static string ShowBox(string txtMessage, string txtTitle)
{
   newMessageBox             = new MyMessageBox();
   newMessageBox.label1.Text = txtMessage;
   newMessageBox.Text        = txtTitle;
   newMessageBox.ShowDialog();
   return Button_id;
}

private void btnOk_Click(object sender, EventArgs e)
{
   Button_id = "1";
   newMessageBox.Dispose();
}

private void btnCancel_Click(object sender, EventArgs e)
{
   newMessageBox.Dispose();
   Button_id = "2";
}

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read