在WinForm开发中,在处理大量数据时不免会有耗时较长的操作,如果将这些操作放在主线程里,软件界面会有较长时间的“无响应”,降低了用户体验,常用的解决方式是加上进度条。
实现思路--------------------------------------------------------------------------------使用BackgroundWorker(已经封装好的线程工具)控件在后台线程执行费时的操作,在主线程中打开一个进度条窗体显示进度。
实现步骤--------------------------------------------------------------------------------第0步:创建一个具有进度条的窗体,以显示进度新建窗体ProcessForm,设置属性FormBorderStyle为None,添加一个ProcessBar控件,如下图所示:进度条窗体PrcessBar的Style属性设置为MarQuee。
在ProcessForm添加如下公共属性:?1234567891011121314151617181920212223//////设置提示信息///publicstringMessageInfo{set{this.labelInfor.Text=value;}}//////设置进度条显示值///publicintProcessValue{set{this.progressBar1.Value=value;}}//////设置进度条样式///publicProgressBarStyleProcessStyle{set{this.progressBar1.Style=value;}}第1步:创建进度条管理类ProcessOperator在该类中添加如下字段:?12privateBackgroundWorker_backgroundWorker;//后台线程privateProcessForm_processForm;//进度条窗体添加如下公共属性、方法和事件:?123456789101112131415161718192021222324252627282930#region公共方法、属性、事件//////后台执行的操作///publicActionBackgroundWork{get;set;}//////设置进度条显示的提示信息///publicstringMessageInfo{set{_processForm.MessageInfo=value;}}//////后台任务执行完毕后事件///publiceventEventHandlerBackgroundWorkerCompleted;//////开始执行///publicvoidStart(){_backgroundWorker.RunWorkerAsync();_processForm.ShowDialog();}#endregion其中,属性BackgroundWork可以指向一个无参数的方法,这里(客户端代码)用来指向要在
1