C# 进度条使用

发布于:2022-08-05 ⋅ 阅读:(207) ⋅ 点赞:(0)


前言:

  • C#在Winform中使用进度条,有专门的ProgressBar可供使用。但在代码中具体怎么使用,不是那么好理解。新手可以照猫画虎添加代码使用,但要真正理解,必须对进程、事件委托等知识有一定的认识。

内容:

接下来,介绍进度条在Winform界面中具体的应用和步骤。

  1. 在项目中新建一个Winform界面,上面放一个ProgressBar和label控件,默认命名。

    重写构造函数

    添加一个setPos函数

    给界面添加一个Load事件,一个FormClosed事件
     public FrmProcsBar(int _Minimun, int _Maximum)
            {
                InitializeComponent();
                progressBar1.Maximum = _Maximum;//设置范围最大值
                progressBar1.Value = progressBar1.Minimum = _Minimun;//设置范围最小值
            }
    
            public void setPos(int value)
            {
                if (value < progressBar1.Maximum)
                {
                    progressBar1.Value = value;//设置进度值
                    label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";
                }
                Application.DoEvents();//重点,必须加上,否则父子窗体都假死
            }
    
            private void FrmProcsBar_Load(object sender, EventArgs e)
            {
                this.Owner.Enabled = false;
    
            }
    
            private void FrmProcsBar_FormClosed(object sender, FormClosedEventArgs e)
            {
                this.Owner.Enabled = true;
            }

  2. 在主界面添加一个调用的按钮


    首先在主界面公用区域创建一个进度条界面的对象,以及调用的委托
     

    其次在按钮的单击事件中加入代码

    调用函数,使用进度条显示处理进度的内容
     

      //定义一个进度条对象,以及一个调用的委托
            FrmProcsBar fm;
            delegate void EventJisuan(object sender, EventArgs e);
    
            private void button1_Click(object sender, EventArgs e)
            {
                fm = new FrmProcsBar(0, 101);
                this.Invoke(new EventJisuan(Jisuan), sender, e);
    
                MessageBox.Show("运行结束");
            }
    
            private void Jisuan(object sender, EventArgs e)
            {
                fm.Show(this);
                fm.setPos(0);//设置进度条位置0%
    
                //需要加载进度的内容
    
                for (int i = 0; i < 200000000; i++) 
                {
                    i++;
                }
    
                fm.setPos(20);//设置进度条位置20%
    
                for (int i = 0; i < 200000000; i++)
                {
                    i++;
                }
    
                fm.setPos(40);//设置进度条位置40%
    
                for (int i = 0; i < 200000000; i++)
                {
                    i++;
                }
    
                fm.setPos(60);//设置进度条位置60%
    
                for (int i = 0; i < 200000000; i++)
                {
                    i++;
                }
    
                fm.setPos(80);//设置进度条位置80%
                
                for (int i = 0; i < 200000000; i++)
                {
                    i++;
                }
                fm.setPos(100);//设置进度条位置100%
                Thread.Sleep(300);
                fm.Close();
            }


运行效果:

例运行程序,点击按钮之后,开始自加计算,大概需要5秒左右


 

结束语:

例总的来说,就是进度条需要放在一个新建的Form上,然后再这个Form里面加好内容,然后使用委托来开辟一个进度条同时运行的线程。估算好要加进度条所有内容的进度百分比,添加百分比直到结束就可以。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到