• C# 进度条使用



    前言:

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

    内容:

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

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

      重写构造函数

      添加一个setPos函数

      给界面添加一个Load事件,一个FormClosed事件
      1. public FrmProcsBar(int _Minimun, int _Maximum)
      2. {
      3. InitializeComponent();
      4. progressBar1.Maximum = _Maximum;//设置范围最大值
      5. progressBar1.Value = progressBar1.Minimum = _Minimun;//设置范围最小值
      6. }
      7. public void setPos(int value)
      8. {
      9. if (value < progressBar1.Maximum)
      10. {
      11. progressBar1.Value = value;//设置进度值
      12. label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";
      13. }
      14. Application.DoEvents();//重点,必须加上,否则父子窗体都假死
      15. }
      16. private void FrmProcsBar_Load(object sender, EventArgs e)
      17. {
      18. this.Owner.Enabled = false;
      19. }
      20. private void FrmProcsBar_FormClosed(object sender, FormClosedEventArgs e)
      21. {
      22. this.Owner.Enabled = true;
      23. }

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


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

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

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

      1. //定义一个进度条对象,以及一个调用的委托
      2. FrmProcsBar fm;
      3. delegate void EventJisuan(object sender, EventArgs e);
      4. private void button1_Click(object sender, EventArgs e)
      5. {
      6. fm = new FrmProcsBar(0, 101);
      7. this.Invoke(new EventJisuan(Jisuan), sender, e);
      8. MessageBox.Show("运行结束");
      9. }
      10. private void Jisuan(object sender, EventArgs e)
      11. {
      12. fm.Show(this);
      13. fm.setPos(0);//设置进度条位置0%
      14. //需要加载进度的内容
      15. for (int i = 0; i < 200000000; i++)
      16. {
      17. i++;
      18. }
      19. fm.setPos(20);//设置进度条位置20%
      20. for (int i = 0; i < 200000000; i++)
      21. {
      22. i++;
      23. }
      24. fm.setPos(40);//设置进度条位置40%
      25. for (int i = 0; i < 200000000; i++)
      26. {
      27. i++;
      28. }
      29. fm.setPos(60);//设置进度条位置60%
      30. for (int i = 0; i < 200000000; i++)
      31. {
      32. i++;
      33. }
      34. fm.setPos(80);//设置进度条位置80%
      35. for (int i = 0; i < 200000000; i++)
      36. {
      37. i++;
      38. }
      39. fm.setPos(100);//设置进度条位置100%
      40. Thread.Sleep(300);
      41. fm.Close();
      42. }


    运行效果:

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


     

    结束语:

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

  • 相关阅读:
    有了HTTP,为什么还要RPC?
    Java函数式编程(2):流式计算
    bootstrap学习:bootstrap定制化 根据bootstrap实现自己的Ui库
    【JAVA数据类型】
    这个编辑器即将开源!
    C语言百钱买百鸡(ZZULIOJ1074:百钱买百鸡)
    Javascript的事件循环机制
    C++总结(9):Lambda表达式详解
    WebDAV之葫芦儿·派盘+思源笔记
    Android中另外一种降低Window窗口层级的方法
  • 原文地址:https://blog.csdn.net/qq_38628970/article/details/126174703