• Winform打造进度条窗口代码,还有取消按钮呢


    Winform打造进度条窗口代码,还有取消按钮呢
    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    namespace Test

    {

        public class MyProgress

        {       

            private int MaxNum;

            Form progressForm=null;

            ProgressBar progressBar1=null;

            bool Stop=false;

            Label label1;

            public bool ProgressStep(int step)

            {

                if (Stop)

                {

                    this.Dispose();

                    return true;

                }

                if (progressBar1.Value > progressBar1.Maximum)

                {

                    this.Dispose();

                    return true;

                }

               

                progressBar1.Value+= step;

                label1.Text = "目前完成:" + (progressBar1.Value * 100 / progressBar1.Maximum) + "%";

                Application.DoEvents();

               

                return false;

            }

            private void btn_Click(object sender, EventArgs e)

            {

                if (MessageBox.Show("你确定终止吗", "终止", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)

                Stop = false;

                else

                Stop = true;

            }

            public MyProgress(int Max, String Caption, bool IsCancel)//最大值和标题

            {

                progressForm = new Form();

                progressForm.MinimizeBox = false;

                progressForm.MaximizeBox = false;

                progressForm.StartPosition = FormStartPosition.CenterScreen;

                progressForm.Width = 326+19;

                progressForm.Height = 96+19+20;

                progressForm.Text= Caption;

                progressForm.TopMost = true;//设置窗口在上边

                label1 = new Label();

                label1.Left = 9;

                label1.Top = 15;

                label1.Parent = progressForm;

                progressBar1 = new ProgressBar();

                progressBar1.Maximum = Max;

                MaxNum = Max;

                progressBar1.Left = 9;

                progressBar1.Top = 25+15;

                progressBar1.Width = 310;

                progressBar1.Parent = progressForm;

                progressBar1.Value = 0;

               

                if (IsCancel)

                {

                    Button btnCancel = new Button();

                    btnCancel.Text = "取消";

                    btnCancel.Left = 240;

                    btnCancel.Top = 54+20;

                    btnCancel.Parent = progressForm;

                    btnCancel.Click += new System.EventHandler(this.btn_Click);

                   

                }

                progressForm.Show();

               

            }

            public void Dispose()

            {

                if (progressForm != null)

                {

                    progressBar1.Dispose();

                    progressForm.Dispose();

                }

            }

        }

    }

    ----------------------------------

    //调用测试 进度条窗口

    private void button2_Click(object sender, EventArgs e)

    {

        MyProgress myProgress = new MyProgress(100, "进度条", true);

        try

        {

            for (int i = 0; i < 100; i++)

            {

                if (myProgress.ProgressStep(1)) return;

                Application.DoEvents();//让系统在百忙中抽空刷新

               

                Thread.Sleep(100);

            }

        }

        finally

        {

            myProgress.Dispose();

        }

    }

  • 相关阅读:
    解决 idea 项目中Error:java: 无效的标记: XX:MaxPermSize=512M
    vant预览图片
    react路由
    computed和watch
    仓库系统面单常用的打印插件
    04.简单了解一下Redis企业级数据备份方案
    CRMEB 源码 login页 获取信息 缓存修改
    frp 搭建远程桌面
    ABP asp.net core 项目发布 IIS部署
    MYSQL 监控数据库SQL语句 查看数据库执行语句
  • 原文地址:https://www.cnblogs.com/lmcblog/p/2624788.html
Copyright © 2020-2023  润新知