一、运行效果:
有图有真相,大家先睹为快。
二、开发需求:
1、WinForm下使用的进度条用户控件。
2、调用位置,用户不需要自己写多线程处理代码来控制UI显示和后台业务执行。
3、代码通用,开发者可以在其他窗体通过“传入参数”和“调用函数”来实现“进度条显示”。
4、进度条接受后台处理函数和界面刷新函数作为“传入参数”。
5、进度条接受用户后台业务代码中发送到“进度显示消息”和“终止进度消息”。
6、进度条接受异步刷新主窗体界面UI和进度条UI界面UI,并且这个过程显示是准确一致的。
三、接口定义
1、主要字段
View Code
/// <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、进度控制
View Code
/// <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、修改样式
View Code
/// <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、前台调用
View Code
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专案即可。
剩下的工作,就是在主界面的后台进行参数初始化和调用接口方法,就可以了。