zoukankan      html  css  js  c++  java
  • C#带百分比的进度条

      1 功能需求:
      2       如果程序中会执行一个耗时的计算过程,我想在用户点击按钮后,弹出一个进度条窗口,显示正在执行的进度(最好能带有百分比),执行完成后,进度条窗口关闭,回到主程序窗口。 在关闭子窗口之前父窗体不能点击操作。
      3 
      4  
      5 
      6  
      7 
      8 ======================================================
      9 
     10 先设计Form2进度条窗体,在Form2中央上放ProgressBar控件progressBar1和Label控件label1,代码:
     11 
     12  
     13 
     14     public partial class Form2 : Form
     15     {
     16         public Form2(int _Minimum,int _Maximum)//带参数,表示进度条的范围的最小值和最大值
     17         {
     18             InitializeComponent();
     19             progressBar1.Maximum=_Maximum;//设置范围最大值
     20             progressBar1.Value = progressBar1.Minimum  = _Minimum;//设置范围最小值
     21 
     22         }
     23         public void setPos(int value)//设置进度条当前进度值
     24         {
     25             if (value < progressBar1.Maximum)//如果值有效
     26 
     27             {
     28                 progressBar1.Value = value;//设置进度值
     29                 label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";//显示百分比
     30             }
     31             Application.DoEvents();//重点,必须加上,否则父子窗体都假死
     32         }
     33         private void Form2_Load(object sender, EventArgs e)
     34         {
     35             this.Owner.Enabled = false;//设置父窗体不可用
     36         }
     37         private void Form2_FormClosed(object sender, FormClosedEventArgs e)
     38         {
     39             this.Owner.Enabled = true;//回复父窗体为可用
     40         }
     41     }
     42 
     43  =================================================================
     44 
     45 调用窗体For1m设计,添加Button控件button1,事件代码:
     46 
     47         private void button1_Click(object sender, EventArgs e)
     48         {
     49             Form2 fm = new Form2(0,100);
     50             fm.Show(this);//设置父窗体
     51             for (int i = 0; i < 100; i++)
     52             {
     53                 fm.setPos(i);//设置进度条位置
     54                 Thread.Sleep(100);//睡眠时间为100
     55             }
     56             fm.Close();//关闭窗体
     57         }
     58 
     59  
     60 
     61  
     62 
     63 ****************************************************************************
     64 
     65 补充:有朋友说在vs2003中fm.Show(this):是不支持的,那么可以将From2的构造函数多加一个参数:
     66 
     67 ****************************************************************************
     68 
     69          public Form OwnerForm;
     70          public Form2(int _Minimum,int _Maximum,Form _OwnerForm)//带参数,表示进度条的范围的最小值和最大值
     71         {
     72             InitializeComponent();
     73             progressBar1.Maximum=_Maximum;//设置范围最大值
     74             progressBar1.Value = progressBar1.Minimum  = _Minimum;//设置范围最小值
     75 
     76             this.OwnerForm=_OwnerForm;
     77 
     78         }
     79         private void Form2_Load(object sender, EventArgs e)
     80         {
     81             this.OwnerForm.Enabled = false;//设置父窗体不可用
     82         }
     83         private void Form2_FormClosed(object sender, FormClosedEventArgs e)
     84         {
     85             this.OwnerForm.Enabled = true;//回复父窗体为可用
     86         }
     87 
     88 Form1中相应的修改为:
     89 
     90         private void button1_Click(object sender, EventArgs e)
     91         {
     92             Form2 fm = new Form2(0,100,this);
     93             fm.Show();//设置父窗体
     94             for (int i = 0; i < 100; i++)
     95             {
     96                 fm.setPos(i);//设置进度条位置
     97                 Thread.Sleep(100);//睡眠时间为100
     98             }
     99             fm.Close();//关闭窗体
    100         }
  • 相关阅读:
    mysql授权grant
    实际用到的linux小方法
    rpm包与 yum 安装与卸载
    7个优秀的国内外移动端web框架(转)
    (转) 关于成为linux运维工程师需要掌握的技能
    Content-Language:en-US
    hibernate的formula如何使用
    No Hibernate Session bound to thread, and configuration does not allow creat
    spring mvc 配置
    十六进制字符串转化为byte数组
  • 原文地址:https://www.cnblogs.com/softwaredeveloper/p/5421118.html
Copyright © 2011-2022 走看看