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

 winform 加载窗体时弹出另一个窗体并显示进度条的源码
//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(循环次数);
那么效果出来 。。 哈哈
时间: 2024-12-17 19:46:32

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

bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题

答案来自老外http://stackoverflow.com/questions/14795035/twitter-bootstrap-modal-blocks-text-input-field $('#myModal').on('shown', function() { $(document).off('focusin.modal'); }); 这个是国内同学的解决方法: http://www.oschina.net/question/226830_143869 //显示modal $('#m

基于layer封装的异步加载分部视图弹出层

背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta na

react16.8 antd按需加载配置(已经弹出和未弹出分别的配置)

误区,antd按需加载同样是需要先安装antd,只是通过插件的配置实现不用再进行样式的引入,可以直接引用antd组件进行开发 怎样判断按需加载配置成功?通过组件引用的判断,在不引入antd样式的前提下,直接引入,使用组件,看组件样式是否有效,如果生效则按需加载配置成功 完成的配置流程 安装antd npm i antd --save 安装babel-plugin-import插件 npm -s install babel-plugin-import 配置webpack,因为现在的时候,我的web

用JS实现加载页面前弹出模态框

主要的JavaScript 代码是: <script> //加载模态框 $('#myModal').modal(); $(document).ready(function () { $("#select").bind("change",function(){ if($(this).val()==0){ return; } else{ $("p").text($(this).val()); } }); }); //选择触发事件 func

在预加载新闻时,怎么去掉初始化内容的显示尴尬?

大家好, 作为一名新手码农,最近做了一个屌丝的新闻浏览界面,但是初始化下载新闻的时候,老是会显示我在布局的设置的源信息,最尴尬的是,还是在显示加载对话框的时候就能被看到,强迫症的我,怎么能忍,搞了半天,还是没搞好,求解个位,可以下一下看看,附上源码

使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码和在线测试地址】

项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jQuery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript也可以实现跨域调用js. jsonp快速入门: [原创]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 关于jquery.ajax的jsonp方法是用以及其error回调函数不能正确执行,请参考园长dudu的文章: jquery ajax中使用jsonp的限制 jQuery插件jQu

winform程序关闭界面时弹出提示框

void Form1_FormClosing(object sender, FormClosingEventArgs e){ if (MessageBox.Show( "窗口关闭后,数据即将丢失!是否现在关闭窗口", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { e.Cancel = true; return; }}

Winform 实现像菜单一样弹出层

原文:Winform 实现像菜单一样弹出层 在实际工作中,如果能像菜单一样弹出自定义内容,会方便很多,比如查询时,比如下拉列表显示多列信息时,比如在填写某个信息需要查看一些信息树时.这个时候自定义弹出界面就显的非常重要了 我这里其实用到的是网上找到的一个控件(下载地址),控件可以把你装载的任何对象显示出来(这里的对象是指:窗体,自定义控件等),这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找 开始正文,这里我做一个多列下拉列表来说明: 1.新建w

【转】C# winform 加载网页 模拟键盘输入自动接入访问网络

[转]C# winform 加载网页 模拟键盘输入自动接入访问网络 声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html 转载请注明出处. 背景: 由于所在办公室网络限制,笔者每天都使用网络都要先连接无线网.如下图,输入授权用户信息登录后才能使用WIFI. 丧心病狂的是该网页Cookie 过期时间为24小时,所以每天重复以下动作:打开浏览器 -> 手动输入 工号密码.密码 -> 点击"登录"按钮.