一、運行效果:
有圖有真相,大家先睹為快。
二、開發需求:
1、WinForm下使用的進度條用戶控件。
2、調用位置,用戶不需要自己寫多線程處理代碼來控制UI顯示和后台業務執行。
3、代碼通用,開發者可以在其他窗體通過“傳入參數”和“調用函數”來實現“進度條顯示”。
4、進度條接受后台處理函數和界面刷新函數作為“傳入參數”。
5、進度條接受用戶后台業務代碼中發送到“進度顯示消息”和“終止進度消息”。
6、進度條接受異步刷新主窗體界面UI和進度條UI界面UI,並且這個過程顯示是准確一致的。
三、接口定義
1、主要字段

/// <summary> /// 后台業務處理的函數接口 /// </summary> public Func<object, object> DoWork_Func = null; /// <summary> /// 后台業務處理的函數接口參數 /// </summary> public object DoWork_FuncParam = null; /// <summary> /// 前台界面刷新的函數接口 /// </summary> // public Action UIShow_Func = null; public Action<object> UIShow_Func = null;
2、進度控制

/// <summary> /// 啟動進度條 /// </summary> public void StartRun() /// <summary> /// 暫停進度條 /// </summary> public void PauseRun() /// <summary> /// 終止進度條 /// </summary> public void StopRun() /// <summary> /// 接收外部發送的“執行進度的消息” /// </summary> /// <param name="percent"></param> /// <param name="msg"></param> public void SendRunMsg(int percent, string msg) /// <summary> /// 接收外部發送的“終止進度的消息” /// </summary> /// <param name="msg"></param> public void SendStopMsg(string msg) /// <summary> /// 進度條是否終止 /// </summary> /// <returns></returns> public bool IsStop()
3、修改樣式

/// <summary> /// 設置進度條標題 /// </summary> /// <param name="title"></param> public void SetTitle(string title) /// <summary> /// 設置進度條狀態顯示前台顏色 /// </summary> /// <returns></returns> public void SetForeColor(int alpha, int red, int green, int blue) /// <summary> /// 設置進度條狀態顯示背景顏色 /// </summary> /// <returns></returns> public void SetBackColor(int red, int green, int blue)
4、前台調用

private void Start_Click(object sender, EventArgs e) { MyBar.SetTitle("任務執行進度如下顯示"); // 設置進度條標題 MyBar.SetForeColor(0, 173, 208, 3); // 設置進度條前台顏色 MyBar.SetBackColor(255, 255, 255); // 設置進度條背景顏色 MyBar.DoWork_Func = this.DoWork; // 指定進度條后台業務處理函數 MyBar.DoWork_FuncParam = 10000 * 1; // 指定進度條后台業務處理函數的入口參數 MyBar.UIShow_Func = this.UIShow; // 指定進度條前台UI界面顯示函數 MyBar.StartRun(); // 啟動進度條 } private void Stop_Click(object sender, EventArgs e) { if (MyBar != null) { MyBar.StopRun(); // 終止進度條 } }
四、使用說明
該進度條使用的時候,只需要把dll文件引入其他WinForm專案即可。
剩下的工作,就是在主界面的后台進行參數初始化和調用接口方法,就可以了。