注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

winform 加载窗体时弹出另一个窗体并显示进度条的源码  

2013-08-13 07:02:30|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//frmA: 源窗体
//------------------------------------------
//引用
using System.Threading;
BackgroundWorker worker;    
     
public frmA()
{
    InitializeComponent();
 
    worker = new BackgroundWorker();
    worker.DoWork += new DoWorkEventHandler(worker_DoWork);
    worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
}
 
/// <summary>
/// 异步 开始事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
    //需要执行的代码
Thread.Sleep(5000);  //让进程上卡5秒钟
}
 
 
 /// <summary>
 /// 事件: 异步执行完成后
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 {
     MessageBox.Show("执行完成。", "run", MessageBoxButtons.OK, MessageBoxIcon.Information);
 }
 
//点击一个按钮后开始执行
private void btnA_Click(object sender, EventArgs e)
 {
//按钮要执行的代码放在 worker_DoWork  事件中执行
  //异步执行开始
worker.RunWorkerAsync();
            //显示进度窗体
            frmB frm = new frmB(this.worker);
            frm.StartPosition = FormStartPosition.CenterScreen;
            frm.ShowDialog(this);
        }
 
frmB:
//里面放了一个loading.gif图片显示进度
------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Windows.Forms;
 
namespace test
{
    public partial class frmB: Form
    {
        public frmB(BackgroundWorker worker)
        {
            InitializeComponent();
            worker.ProgressChanged +=new ProgressChangedEventHandler(worker_ProgressChanged);
            worker.RunWorkerCompleted +=new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
        }
 
        void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.Close();
        }
 
        void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            //lblStatus.Text = "";
        }
 
        //工作完成后执行的事件 
        public void OnProcessCompleted(object sender, EventArgs e) 
        {
            this.Close(); 
        }
  
    }

  二:在弹出的窗体里显示backgroundWorker的进度

1, backgroundWorker1的WorkerReportsProgress属性设置为true
2, 写如下事件             
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
             progressBar.Value = e.ProgressPercentage;  
     
 
progressBar是进度条是你定义的变量..可以写在后台执行里面控制
3 .在后台执行里面
 backgroundWorker1.ReportProgress(50);
其中50就是进度调的百分比.
比如一个循环循环100次
没次backgroundWorker1.ReportProgress(循环次数);
那么效果出来 。。 哈哈
  评论这张
 
阅读(524)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017