using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
namespace Demo
{
class ProgressM
{
private BackgroundWorker worker = null;
System.Windows.Forms.Control ctl = null;
frmProgress progressForm = null;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="pctl">要求显示进度条窗体的窗体、用户控件</param>
public ProgressM(Control pctl)
{
ctl = pctl;
if (ctl != null)
{
ctl.Cursor = System.Windows.Forms.Cursors.WaitCursor;
ctl.Enabled = false;
}
}
/// <summary>
/// 显示进度条窗体
/// </summary>
/// <param name="sender">显示窗体同时执行方法的委托</param>
internal void progressShow(DoWorkEventHandler sender, EnumProgress progText)
{
progressForm = new frmProgress(ctl, progText);
progressForm.Show();
worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += sender;
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);
worker.RunWorkerAsync();
}
/// <summary>
/// 显示进度条窗体
/// </summary>
/// <param name="sender">显示窗体同时执行方法的委托</param>
internal void progressShow(DoWorkEventHandler MainTarget, RunWorkerCompletedEventHandler CompletedTarget, EnumProgress progText)
{
progressForm = new frmProgress(ctl, progText);
progressForm.Show();
worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += MainTarget;
worker.RunWorkerCompleted += CompletedTarget;
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);
worker.RunWorkerAsync();
}
/// <summary>
/// 显示进度条窗体(不关闭进度框)
/// </summary>
/// <param name="sender">显示窗体同时执行方法的委托</param>
internal void progressShowNoClose(DoWorkEventHandler sender, EnumProgress progText)
{
if (progressForm == null)
{
progressForm = new frmProgress(ctl, progText);
progressForm.Show();
}
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += sender;
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);
worker.RunWorkerAsync();
}
/// <summary>
/// 显示进度条窗体(不关闭进度框)
/// </summary>
/// <param name="sender">显示窗体同时执行方法的委托</param>
internal void progressShowNoClose(DoWorkEventHandler MainTarget, RunWorkerCompletedEventHandler CompletedTarget, EnumProgress progText)
{
if (progressForm == null)
{
progressForm = new frmProgress(ctl, progText);
progressForm.Show();
}
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += MainTarget;
worker.RunWorkerCompleted += CompletedTarget;
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);
worker.RunWorkerAsync();
}
internal void RunWorkerAsync()
{
if (progressForm == null) return;
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);
worker.RunWorkerAsync();
}
/// <summary>
/// 使用进程执行
/// </summary>
internal void RunWorker(DoWorkEventHandler sender)
{
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += sender;
worker.RunWorkerAsync();
}
/// <summary>
/// 使用进程执行
/// </summary>
internal void RunWorker(DoWorkEventHandler MainTarget, RunWorkerCompletedEventHandler CompletedTarget)
{
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += MainTarget;
worker.RunWorkerCompleted += CompletedTarget;
worker.RunWorkerAsync();
}
}
}