C#上位机模块之独立窗口进度条

该文章介绍如何在上位机启动时创建一个独立的进度条窗口,以美观地展示加载过程。通过新建窗体类设置公共的进度条,并在主窗口类中实例化,调用方法更新进度。在加载过程中,使用线程控制加载速度并显示百分比,确保用户界面的响应性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上位机开启时,由于需要加载大量的控件,类和相关的文件。所以在加载时需要创建一个独立窗口的进度条用于在加载主窗口前预留一定的时间,并使得上位机更加美观。
第一步:新建一个窗体类
在这里插入图片描述
对进度条设置:属性为public共有在这里插入图片描述
对进度条窗口进行设置,将图标与边框去除
在这里插入图片描述

//进度条窗口类
public partial class Form2 : Form
    {
    //创建构造函数,用于实例化对象
        public Form2(int _Minimum, int _Maximum)
        {
            InitializeComponent();
            progressBar1.Maximum = _Maximum;//设置范围最大值
            progressBar1.Value = progressBar1.Minimum = _Minimum;//设置范围最小值
        }
        //创建进度运行显示过程

        public void SetPos(int iValue, string sTip = "系统启动中...")
        {
            if (iValue <= this.progressBar1.Maximum)
            {
                progressBar1.Value = iValue;//设置进度值               
                label2.Text = sTip;
                label3.Text = (iValue * 100 / progressBar1.Maximum).ToString() + "%";//显示百分比
                Thread.Sleep(1);
            }
            Application.DoEvents();//重点,必须加上,否则父子窗体都假死
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            this.Owner.Enabled = false;//设置父窗体不可用
        }

        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Owner.Enabled = true;//设置父窗体可用
        }
    }
//主窗口类
public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();

        }
       
        int nProcessValue = 0;
        //创建进度条对象
        Form2 processForm;

        private void Form1_Load(object sender, EventArgs e)
        {
        //实例化对象
            processForm = new Form2(0, 100);
            //初始化系统
            InitialSys();
            
        }
        private void InitialSys()
        {
            try
            {
            //开启进度条显示
                this.Show();
                this.WindowState = FormWindowState.Maximized;
                this.Hide();

                processForm.Show(this);
                //使用对应的加载程序
                //其中可以在这部分添加需要加载的函数
                nProcessValue = 10;
                SetPos(nProcessValue, "上位机启动中...");
                nProcessValue = 15;
                SetPos(nProcessValue, "加载配置文件...");
                nProcessValue = 80;
                SetPos(nProcessValue, "上位机加载成功。。。");
                nProcessValue = 95;
                SetPos(nProcessValue, "启动系统成功...");
            }
            catch (Exception ex)
            {
            //错误弹出内容
            }
            finally
            {
            //结束,进度条窗口关闭,父窗口开启
                processForm.Close();
                this.Show();
            }
        }
        //设置进度条位置,以及加载速度
        private void SetPos(int value, string str)
        {
            int cur  = processForm.progressBar1.Value;
            for (int i = cur; i <= value; i++)
            {
                processForm.SetPos(i, str);//设置进度条位置
                //每百分之1为0.1秒。使用线程控制
                Thread.Sleep(100);//睡眠时间为100
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值