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();
}
}
}