This article describes a simple method to display a waiting dialog and not block the main form.
When I create a WinForm application by C#, it's very troublesome to show a waiting dialog. Sometimes I do it, but not beautiful or hard to change style.
I use a class library,
WaitForm is a waiting dialog, and
WaitWndFun is a class to show the form or close by create thread,
WaitWndFun Class Function
public void Show(Form parent)
loadthread = new Thread(new ParameterizedThreadStart(LoadingProcessEx));
public void Close()
if (loadingForm != null)
loadingForm = null;
loadthread = null;
private void LoadingProcessEx()
loadingForm = new WaitForm();
private void LoadingProcessEx(object parent)
Form Cparent = parent as Form;
loadingForm = new WaitForm(Cparent);
When closing dialog, there is a function to close and dispose the form in
public void CloseLoadingForm()
this.DialogResult = DialogResult.OK;
if (label1.Image != null)
And when there is a parent form, we should show dialog in center of parent.
public WaitForm(Form parent)
if (parent != null)
this.StartPosition = FormStartPosition.Manual;
this.Location = new Point(parent.Location.X + parent.Width / 2 - this.Width / 2,
parent.Location.Y + parent.Height / 2 - this.Height / 2);
this.StartPosition = FormStartPosition.CenterParent;
How to Use
It is very easy to use.
- Reference the WaitWnd.dll or add sources file to your project.
- Change the style of waiting form, you can change the picture and text of label to your liking in the form designer.
- Create a new
WaitWndFun object. When you call show function, the waiting form will appear, and when you call
close function, the waiting form will close.
WaitWnd.WaitWndFun waitForm = new WaitWnd.WaitWndFun();
private void button1_Click(object sender, EventArgs e)