zoukankan      html  css  js  c++  java
  • 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(循环次数);
    那么效果出来 。。 哈哈
    
  • 相关阅读:
    046.Kubernetes集群管理-日常运维
    045.Kubernetes集群存储-CSI存储机制
    044.Kubernetes集群存储-StorageClass
    043.Kubernetes集群存储-共享存储
    CKAD考试心得分享
    050.Kubernetes集群管理-Prometheus+Grafana监控方案
    附015.Kubernetes其他技巧
    041.Kubernetes集群网络-K8S网络策略
    042.Kubernetes集群网络-flannel及calico
    040.Kubernetes集群网络-CNI网络模型
  • 原文地址:https://www.cnblogs.com/liushunli/p/4330632.html
Copyright © 2011-2022 走看看