C# WinForm进度条Demo,两种样式(是否显示%进度);稍加修改样式,即可拿来项目上使用。
1
进度条 C#进度条 C#Winform进度条 C#开发的进度条 用C#开发的进度条
1
在WinForm中,比如一些文件传输和一些费时的操作,如果处理不好就会造成“假死”的情况,为此我们可以采用进度条进行友好提示。 BackgroundWorker类是.net 2.0里新增加的一个类,对于需要长时间操作而不需要用户长时间等待的情况可以使用这个类。 注意确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。 它有几个主要属性: CancellationPending——指示应用程序是否已请求取消后台操作。 IsBusy——指示 BackgroundWorker 是否正在运行异步操作 WorkerReportsProgress——该值指示 BackgroundWorker 能否报告进度更新 WorkerSupportsCancellation——该值指示 BackgroundWorker 是否支持异步取消 还有如下事件: DoWork——调用 RunWorkerAsync 时发生。 ProgressChanged——调用 ReportProgress 时发生。 RunWorkerCompleted——当后台操作已完成、被取消或引发异常时发生。 还有如下方法: CancelAsync——请求取消挂起的后台操作 ReportProgress——引发 ProgressChanged 事件 RunWorkerAsync——开始执行后台操作 如果启用取消线程则设置WorkerSupportsCancellation = true;然后调用 CancelAsync方法即可。
2021-08-30 15:14:11 45KB WinForm进度条异步实现
1
在WinForm开发中,在处理大量数据时不免会有耗时较长的操作,如果将这些操作放在主线程里,软件界面会有较长时间的“无响应”,降低了用户体验,常用的解决方式是加上进度条。 实现思路 -------------------------------------------------------------------------------- 使用BackgroundWorker(已经封装好的线程工具)控件在后台线程执行费时的操作,在主线程中打开一个进度条窗体显示进度。 实现步骤 -------------------------------------------------------------------------------- 第0步:创建一个具有进度条的窗体,以显示进度 新建窗体ProcessForm,设置属性FormBorderStyle为None,添加一个ProcessBar控件,如下图所示: 进度条窗体 PrcessBar的Style属性设置为MarQuee。在ProcessForm添加如下公共属性: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /// /// 设置提示信息 /// public string MessageInfo { set { this.labelInfor.Text = value; } } /// /// 设置进度条显示值 /// public int ProcessValue { set { this.progressBar1.Value = value; } } /// /// 设置进度条样式 /// public ProgressBarStyle ProcessStyle { set { this.progressBar1.Style = value; } } 第1步:创建进度条管理类ProcessOperator 在该类中添加如下字段: ? 1 2 private BackgroundWorker _backgroundWorker;//后台线程 private ProcessForm _processForm;//进度条窗体 添加如下公共属性、方法和事件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #region 公共方法、属性、事件 /// /// 后台执行的操作 /// public Action BackgroundWork { get; set; } /// /// 设置进度条显示的提示信息 /// public string MessageInfo { set { _processForm.MessageInfo = value; } } /// /// 后台任务执行完毕后事件 /// public event EventHandler BackgroundWorkerCompleted; /// /// 开始执行 /// public void Start() { _backgroundWorker.RunWorkerAsync(); _processForm.ShowDialog(); } #endregion 其中,属性BackgroundWork可以指向一个无参数的方法,这里(客户端代码)用来指向要在
2021-02-26 08:57:04 34KB Winform 进度条 Background Worker
1