C# 进度条

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace ProgressBar
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.progressBar1.Visible = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.progressBar1.Visible = true;
            this.llabelProcess.Visible = true;
            // 启动进度条线程
            System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(NumberIncrement));
            thread.Start();
            Application.DoEvents();
            

        }
        
        public void NumberIncrement()
        {
             EventHandler eh = new EventHandler(DisplayNumber(), pList);//启用一个委托,跳回UI线程.
             try
             {
                 this.Invoke(eh, new object[] { null, null });//执行委托
             }
             catch (System.Exception ex)
             {
 
             }
        }

        public void DisplayNumber(object sender, EventArgs e)
        {
            for (int i = 1; i <= 100; i++)
            {
                SetProcessValue("测试中...", i);
                Thread.Sleep(50);
            }
        }

        //设置进度条显示
        public void SetProcessValue(string TitleName, int value)
        {
            this.progressBar1.Tag = TitleName;
            string str = value.ToString() + "%";
            Font font = new Font("Times New Roman", (float)11, FontStyle.Regular);
            PointF pt = new PointF(this.progressBar1.Width / 2 - 10, this.progressBar1.Height / 2 - 10);
            this.progressBar1.Value = value;
            this.llabelProcess.Text = str;
            this.Refresh();

            if (value >= 100)
            {
                MessageBox.Show("导出完成,请保存!");
                this.button1.Enabled = true;
                this.progressBar1.Visible = false;
                this.llabelProcess.Visible = false;
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/tianjifa/p/9334182.html
今日推荐