How to display message box without any buttons in C#

user1520860 picture user1520860 · Jul 16, 2012 · Viewed 25.9k times · Source

I try to show a MESSAGE to the user while an operation is executed. The MESSAGE won't show any button. Just a MESSAGE (text) and maybe a background image.

The problem is the following:

  • MessageBox does not seem to be the good control (because of button and it blocks the running process).
  • Form.ShowDialog() also blocks the running process. I don't know what to do.
  • I want to show the message, run my process, and dispose the message when the process is done.

How to achieve this in C# ?

Answer

RobIII picture RobIII · Jul 16, 2012

Create a simple form with the message (or expose a public property to be able to change the message, or a constructor with message parameter to pass it in) and show the form using this Show overload. Then disable the (entire) original (owner) form (or just disable the controls you don't want accesible).

So, in your "main" form do this:

Form f = new MessageForm();
f.Show(this);         //Make sure we're the owner
this.Enabled = false; //Disable ourselves
//Do processing here
this.Enabled = true;  //We're done, enable ourselves
f.Close();            //Dispose message form

Also, consider using a BackgroundWorker.