Drag a
ProgressBar
onto the
Form
. When you need to set a new progress percentage, set the
ProgressBar
's
Value
property.
You may find it better to use a
BackgroundWorker
to do the 'set up' in it's
DoWork
event handler. Set it's
WorkerReportsProgress
property to
true
and handle it's
ProgressChanged
event.
When you need to update the progress, call the
BackgroundWorker
's
ReportProgress
method and in the handler update the
ProgressBar
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
public partial class FormSetUp : Form
{
BackgroundWorker backgroundWorker;
ProgressBar progressBar;
public FormSetUp()
{
InitializeComponent();
Shown += new EventHandler(FormSetUp_Shown);
backgroundWorker = new BackgroundWorker();
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.DoWork += new DoWorkEventHandler(
backgroundWorker_DoWork);
backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(
backgroundWorker_ProgressChanged);
backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
backgroundWorker_RunWorkerCompleted);
progressBar = new ProgressBar();
Controls.Add(progressBar);
}
void FormSetUp_Shown(object sender, EventArgs e)
{
backgroundWorker.RunWorkerAsync();
}
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
int percentage = 0;
backgroundWorker.ReportProgress(percentage);
Thread.Sleep(1000);
percentage += 50;
backgroundWorker.ReportProgress(percentage);
Thread.Sleep(1000);
percentage += 50;
backgroundWorker.ReportProgress(percentage);
Thread.Sleep(1000);
}
void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
}
void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Close();
}
}