为了账号安全,请及时绑定邮箱和手机立即绑定

WINFORM状态栏中进度条的处理问题

WINFORM状态栏中进度条的处理问题

小怪兽爱吃肉 2018-12-07 10:56:24
各位博友好! 现在我想实现这样的功能:窗体状态栏中有个进度条,我想要他显示处理某个事件或者加载某个事项时的进度,我该如何处理呢? 在线等,知道的大大们就不要藏了,给我个DEMO或者介绍个网站、文章都可以的。
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

最好使用BackgroundWorker,简单易懂.

例子:

 
private BackgroundWorker bgwConnect;
//初始化BGW
private InitBgw { bgwConnect = new BackgroundWorker(); bgwConnect.WorkerSupportsCancellation = true;//允许中止
 bgwConnect.WorkerReportsProgress = true;//允许报告进度-这里就是你需要的
bgwConnect.DoWork
+= new DoWorkEventHandler(bgwConnect_DoWork); bgwConnect.ProgressChanged += new ProgressChangedEventHandler(bgwConnect_ProgressChanged);
}
private void bgwConnect_DoWork(object sender, DoWorkEventArgs e)
{
 //你执行的事件或加载什么
}


private void bgwConnect_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
 pBConnect.Value = e.ProgressPercentage;//PBConnect是你定义的ProgressBar,一般这里就可以的,如有问题用下面的
//ChangePB( e.ProgressPercentage);//这里是为了防止和UI线程冲突而用.

}

private void delegate ChangePBDg(int per);
private void ChangePB(int per)
{
  if(pBConnect.InvokeRequired)
  {
    ChangePBDg d = ChangePB;
      pBConnect.Invoke(d, per);

  }
  else
  {
   pBConnect.Value=per;
  }
}

还有个RunWorkerCompleted,在你加载完毕后执行什么.

以上

查看完整回答
反对 回复 2019-01-21
?
桃花长相依

TA贡献1860条经验 获得超8个赞

一般需要进度条的,肯定是要显示一些密集型计算的状态,一般会使用异步去实现。

你可以使用委托及控件的beginInvoke去做异步计算,去更新UI

查看完整回答
反对 回复 2019-01-21
  • 3 回答
  • 0 关注
  • 598 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信