zoukankan      html  css  js  c++  java
  • 关于progressbar

    private void btnStart_Click(object sender, EventArgs e)
            {
              pbrProgress.Maximum = 100;//设置最大长度值           
                this.Cursor = Cursors.WaitCursor;
                ///添加一个事件处理程序   
                backgroundWorker1.DoWork += new DoWorkEventHandler(DoWork);
               ///添加一个显示进度条的事件   
                this.backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(ProgressChanged); //ProgressChanged 是显示进度条Method   
                ///后台已操作完成,关闭窗体   
                this.backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CloseForm); // CloseForm()调用关闭窗体   
                ///开始执行后台操作   
                this.backgroundWorker1.RunWorkerAsync(filename);
            }
                private void DoWork(object sender , DoWorkEventArgs e)   
                {   
                    e.Result = (WorkTimer(this.backgroundWorker1,e));   
                } 
                /// <summary>   
            /// 设置进度条显示长度   
              /// </summary>   
            /// <param name="sender"></param>   
            /// <param name="e"></param>   
           
            private int WorkTimer(object sender, DoWorkEventArgs e)  //此为自己的操作处理函数,切记!! 
            {
                int max = pbrProgress.Maximum;
                int percent = 0;
    
                for (int i = 0; i <= max; i++)   
                {   
                    if (this.backgroundWorker1.CancellationPending)   
                    {   
                        e.Cancel = true;   
                        return -1;   
                    }   
                    else 
                    {   
                        //自己的函数处理计算过程
                          ......  
    
    
                        percent = (int)(((double)i / (double)max) * 100);
                        this.backgroundWorker1.ReportProgress(percent);   //单次循环处理完报告进度,触发ProgressChanged事件                
                    }   
                    ///   将当前线程挂起指定的时间   
                    System.Threading.Thread.Sleep(100);   
                }   
                return -1;   
            }   
            //显示进度条
            public void ProgressChanged(object sender, ProgressChangedEventArgs e)   
            {   
                this.pbrProgress.Style = ProgressBarStyle.Continuous;   
                this.lblMsg.Text=string.Format("已完成{0}%,请稍候...", e.ProgressPercentage);
                this.pbrProgress.Value = e.ProgressPercentage;   
            }   
             /// <summary>   
            /// 关闭进度条显示窗体   
            /// </summary>   
            /// <param name="sender"></param>   
            /// <param name="e"></param>   
            public void CloseForm(object sender, RunWorkerCompletedEventArgs e)   
            {   
                this.Close();   
            }
    

      

    Reference:http://blog.csdn.net/x415831943/article/details/7795761

    http://www.cnblogs.com/xuqiang/archive/2010/03/29/1953690.html

    另外关于如何在ProgressBar 添加文字

    虽然ToolStripProgressBar.Text 屬性和ProgressBar.Text属性均存在,但不可用,“此 API 支持 .NET Framework 基础结构,不适合在代码中直接使用。”具体参考http://msdn.microsoft.com/zh-cn/library/vstudio/6fetw5dd(v=vs.90).aspx

    以下为解决方法:

    private void pbPrecentage(ToolStripProgressBar pb)
    {
        int percent = (int)(((double)(pb.Value - pb.Minimum) /
        (double)(pb.Maximum - pb.Minimum)) * 100);
    
        using (Graphics gr = pb.ProgressBar.CreateGraphics())
        {
            //Switch to Antialiased drawing for better (smoother) graphic results
            gr.SmoothingMode = SmoothingMode.AntiAlias;
            gr.DrawString(percent.ToString() + "%",
                SystemFonts.DefaultFont,
                Brushes.Black,
                new PointF(pb.Width / 2 - (gr.MeasureString(percent.ToString() + "%",
                    SystemFonts.DefaultFont).Width / 2.0F),
                pb.Height / 2 - (gr.MeasureString(percent.ToString() + "%",
                    SystemFonts.DefaultFont).Height / 2.0F)));
        }
    }
    

      //Activate Double Buffering for all kind of drawing within your form
    this.SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.UserPaint|ControlStyles.DoubleBuffer,true);

    以上用于窗体设置,如不设置类型则progressbar无text
    Reference:http://stackoverflow.com/questions/7708904/adding-text-to-the-tool-strip-progress-bar

  • 相关阅读:
    Linux命令:sed命令
    Linux命令:grep命令 | egrep命令
    Linux命令:find命令
    bash脚本编程
    Linux命令:vi | vim命令
    Linux文件权限管理
    237. 删除链表中的节点
    160. 相交链表
    538. 把二叉搜索树转换为累加树
    543.Diameter of Binary Tree
  • 原文地址:https://www.cnblogs.com/Daywei/p/2966465.html
Copyright © 2011-2022 走看看