C#编程-13:ProgressBar制作时间进度倒计时_彭世瑜_新浪博客_c#

源码:

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

namespace WindowsFormsProgressBar
{
    public partial class Form1 : Form
    {
        private void outLog(string str)
        {
            txtOut.AppendText(DateTime.Now.ToString() + str + "\n");
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            btnBegin.Enabled = false;
            btnStop.Enabled = false;
            btnFinish.Enabled = false;
        }

        private void btnSetup_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtInput.Text.Trim() != "")
                {
                    progressBar1.Minimum = 0;
                    progressBar1.Maximum = Convert.ToInt32(txtInput.Text);
                    progressBar1.Step = -1;
                    progressBar1.Value = progressBar1.Maximum;
                    btnSetup.Enabled = false;
                    btnBegin.Enabled = true;
                    outLog("时间设置正确,请按开始键继续。。。");
                }
            }
            catch {
                MessageBox.Show("请输入一个正确的秒数!");
            }
        }

        private void btnBegin_Click(object sender, EventArgs e)
        {
            btnBegin.Enabled = false;
            btnStop.Enabled = true;
            btnFinish.Enabled = true;
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (progressBar1.Value > progressBar1.Minimum)
            {
                progressBar1.PerformStep();
                string per = Convert.ToDouble(progressBar1.Value) / Convert.ToDouble(progressBar1.Maximum) * 100 + "%";
                if (per != "0%")
                {
                    outLog("进度条正在工作,剩余:" + per);
                }
                //else
                //{
                //    outLog("进度条已完成");
                //    btnSetup.Enabled = true;
                //}
            }
            else
            {
                outLog("进度完成!");
                timer1.Stop();
                btnBegin.Enabled = false;
                btnStop.Enabled = false;
                btnFinish.Enabled = false;
                btnSetup.Enabled = true;
            }
        }

        private void btnStop_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled == true)
            {
                outLog("stop");
                btnStop.Text = "继续";
                timer1.Stop();
            }
            else {
                outLog("继续工作");
                btnStop.Text = "暂停";
                timer1.Start();
            }
        }

        private void btnFinish_Click(object sender, EventArgs e)
        {
            outLog("停止工作\n==================");
            timer1.Enabled = false;
            progressBar1.Value = 0;
            btnSetup.Enabled = true;
            btnBegin.Enabled = false;
            btnStop.Enabled = false;
            btnFinish.Enabled = false;
            btnStop.Text = "暂停";

        }
    }
}

练习笔记:
1、 Convert.ToInt32(txtInput.Text),类型强制转换,字符串型数据转为整型数据。
2、progressBar1.PerformStep(),进度条执行一次步进。   Perform v.执行