Click here to Skip to main content
12,761,826 members (41,930 online)
Click here to Skip to main content
Add your own
alternative version

Stats

4.1K views
453 downloads
12 bookmarked
Posted 11 Jan 2017

Simple Display Dialog of Waiting in WinForms

, 12 Jan 2017 CPOL
Rate this:
Please Sign up or sign in to vote.
A simple method to display a waiting dialog in WinForm application, and not block the main form.

Introduction

This article describes a simple method to display a waiting dialog and not block the main form.

Background

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.

Structure

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

Show Function

...
public void Show(Form parent)
        {
            loadthread = new Thread(new ParameterizedThreadStart(LoadingProcessEx));
            loadthread.Start(parent);
        }
...

Close Function

public void Close()
        {
            if (loadingForm != null)
            {
                loadingForm.BeginInvoke(new System.Threading.ThreadStart(loadingForm.CloseLoadingForm));
                loadingForm = null;
                loadthread = null;
            }
        }

Thread Method

private void LoadingProcessEx()
        {
            loadingForm = new WaitForm();
            loadingForm.ShowDialog();
        }
        private void LoadingProcessEx(object parent)
        {
            Form Cparent = parent as Form;
            loadingForm = new WaitForm(Cparent);
            loadingForm.ShowDialog();
        }

When closing dialog, there is a function to close and dispose the form in WaitForm.

public void CloseLoadingForm()
        {
            this.DialogResult = DialogResult.OK;
            this.Close();
            if (label1.Image != null)
            {
                label1.Image.Dispose();
            }
        }

And when there is a parent form, we should show dialog in center of parent.

public WaitForm(Form parent)
        {
            InitializeComponent();
            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);
            }
            else
            {
                this.StartPosition = FormStartPosition.CenterParent;
            }
        }

How to Use

It is very easy to use.

  1. Reference the WaitWnd.dll or add sources file to your project.
  2. Change the style of waiting form, you can change the picture and text of label to your liking in the form designer.

  3. 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)
            {
                waitForm.Show(this);
    
                //do something
                waitForm.Close();
            }

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Dean Feng
Software Developer SHJS Tech
China China
A Software Developer.

You may also be interested in...

Comments and Discussions

 
QuestionLove It! Pin
Graham Irons20-Feb-17 22:32
memberGraham Irons20-Feb-17 22:32 
AnswerRe: Love It! Pin
Dean Feng21-Feb-17 4:31
professionalDean Feng21-Feb-17 4:31 
GeneralGood but... Pin
loyal ginger17-Jan-17 4:37
memberloyal ginger17-Jan-17 4:37 
GeneralRe: Good but...[Thank you] Pin
Dean Feng17-Jan-17 16:42
professionalDean Feng17-Jan-17 16:42 
GeneralRe: Good but...[Thank you] Pin
loyal ginger18-Jan-17 11:11
memberloyal ginger18-Jan-17 11:11 
QuestionNICE Pin
DumpsterJuice13-Jan-17 9:21
memberDumpsterJuice13-Jan-17 9:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170217.1 | Last Updated 12 Jan 2017
Article Copyright 2017 by Dean Feng
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid