当前位置: 首页 > news >正文

C# 窗体进度条

一。通过计时控制进度条

 public processBarForm(int sec)//计时 单位0.1s  --------窗体构造函数,传入需要定时间的参数

通过定时器计时每0.1秒计数一次。 记得在窗体放入定时器。定时器默认时间间隔100ms

label显示百分比

 public partial class processBarForm : Form
    {
        int timeover = 0;
        int count = 0;

        //------------------方式一 --------------------------
        public processBarForm(int sec)//计时 单位0.1s  
        {
            InitializeComponent();
            timeover = sec;
            timer1.Enabled = true;//开启定时器
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            count++;
            if (timeover < count) this.Close();
            else
            {
                sendProgressBar.Value = (count * 100) / (timeover);
                label1.Text = ((count * 100) / (timeover )).ToString() + "%";
            }
        }
}

使用的地方:

  processBarForm processbarForm = new processBarForm(30);//创建窗体进度条 ----时长3s
  processbarForm.StartPosition = FormStartPosition.CenterScreen;//居中
  processbarForm.ShowDialog();

效果

二。通过最大值,最小值控制进度条

 //-------------------------方式二--------------------------
        public processBarForm(int _Minimun, int _Maximum) //计范围 
        {
            InitializeComponent();
            sendProgressBar.Maximum = _Maximum;//设置范围最大值
            sendProgressBar.Value = sendProgressBar.Minimum = _Minimun;//初始值设置范围最小值
        }
        public void setPos(int value)
        {
            if (value < sendProgressBar.Maximum)
            {
                sendProgressBar.Value = value;//设置进度值
                label1.Text = (value * 100 / sendProgressBar.Maximum).ToString() + "%";
            }
            else {
                this.Close();
            }
            Application.DoEvents();//重点,必须加上,否则父子窗体都假死
        }

调用初始化:

    processBarForm processbarForm = new processBarForm(0, (int)(BSum));//进度条范围  BSum发包数量
   processbarForm.StartPosition = FormStartPosition.CenterScreen;
   processbarForm.Show();//不会阻塞主线程
  processbarForm.Activate();

线程里改变百分比: processbarForm.setPos(BCount);//设置进度条  BCount发送第几包

相关文章:

  • 【opencv-c++】鼠标事件
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)
  • ijkplayer播放器剖析(四)音频解码与音频输出机制分析
  • 本地web项目如何使用外网访问?教你轻松使用cpolar在windows搭建内网穿透
  • MySQL复合查询
  • 你需要的导航网站,这里都有
  • [SV]SystemVerilog中指定打印格式
  • 长期主义就是坚持重复的做一件事?
  • 各位程序员们,睡眠不足产生的后果超出你想象!
  • c++学习
  • 6步搭建一个飞机大战游戏
  • 前端与后端传递数据 — — JSON
  • CANoe/CAPL ,QQ消息远程通知
  • 3D 视觉算法初学概述
  • 特征点检测和特征点匹配(ORB)
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • co模块的前端实现
  • IP路由与转发
  • Java新版本的开发已正式进入轨道,版本号18.3
  • k8s如何管理Pod
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • PAT A1092
  • Spring核心 Bean的高级装配
  • v-if和v-for连用出现的问题
  • webgl (原生)基础入门指南【一】
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 基于游标的分页接口实现
  • 力扣(LeetCode)357
  • 前端_面试
  • 删除表内多余的重复数据
  • 学习笔记:对象,原型和继承(1)
  • ​水经微图Web1.5.0版即将上线
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (3)nginx 配置(nginx.conf)
  • (Java数据结构)ArrayList
  • (安卓)跳转应用市场APP详情页的方式
  • (二)windows配置JDK环境
  • (二)丶RabbitMQ的六大核心
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)JAVA中的堆栈
  • (转)负载均衡,回话保持,cookie
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net MySql
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net中wcf服务生成及调用
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用