博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform 加载窗体时弹出另一个窗体并显示进度条的源码
阅读量:7193 次
发布时间:2019-06-29

本文共 2536 字,大约阅读时间需要 8 分钟。

//frmA: 源窗体//------------------------------------------//引用using System.Threading;
BackgroundWorker worker;    
    
public frmA()        {            InitializeComponent();            worker = new BackgroundWorker();            worker.DoWork += new DoWorkEventHandler(worker_DoWork);            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);        }        ///         /// 异步 开始事件        ///         ///         ///         private void worker_DoWork(object sender, DoWorkEventArgs e)        {            //需要执行的代码
Thread.Sleep(5000);  //让进程上卡5秒钟
}        ///         /// 事件: 异步执行完成后         ///         ///         ///         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属性设置为true2, 写如下事件              private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)        {             progressBar.Value = e.ProgressPercentage;        }  progressBar是进度条是你定义的变量..可以写在后台执行里面控制3 .在后台执行里面 backgroundWorker1.ReportProgress(50);其中50就是进度调的百分比.比如一个循环循环100次没次backgroundWorker1.ReportProgress(循环次数);那么效果出来 。。 哈哈

  

转载地址:http://xqvkm.baihongyu.com/

你可能感兴趣的文章
matlab从fig文件中提取数据
查看>>
mysql show profiles 使用分析sql 性能
查看>>
POJ 2488 A Knight's Journey (DFS)
查看>>
jvm内存
查看>>
silverlight在XAML资源中实例化CLR对象
查看>>
Java中的字符串不变性
查看>>
Sql 的 RAISERROR用法
查看>>
Css下拉菜单设置
查看>>
Robot Framework学习笔记(八)------ride标签使用
查看>>
BIOS与EC之间关系
查看>>
一款简洁而强大的前端框架—JQuery
查看>>
js中的解绑事件
查看>>
ubuntu16.04下编译安装vim8.1
查看>>
DSSM 深度学习解决 NLP 问题:语义相似度计算
查看>>
真实世界的脉络].(英)戴维.多伊奇.pdf
查看>>
POJ 3710 Christmas Game
查看>>
秒懂神经网络---真·模拟退火算法
查看>>
js进阶 10-9 -of-type型子元素伪类选择器
查看>>
html5--6-14 CSS3中的颜色表示方式
查看>>
thinkphp5空控制器和空操作
查看>>