C# winform 定时器控件+按钮+comboBox,实现定时退出程序

今天用了些时间来学习了下 C# winform定时器控件,通过实现一个倒计时关闭程序的功能来学习定时器控件的使用。这个程序有一个comboBox 下拉选择控件来选择倒计时的时间,一个开始按钮,一个暂停按钮,和一个 Label标签用了显示提示信息。实现的功能有:1. 开始倒计时关闭程序 2. 暂停倒计时 3. 继续倒计时。

程序界面

代码

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 TimerDemo
{
    public partial class Form1 : Form
    {
        int count_time; // 时间变量,每过 1s -1
        bool pause_flag = false; // 继续/暂停标志
        public Form1()
        {
            InitializeComponent();
            // 给空的 comboBox 控件添加 Item
            foreach (int i in Enumerable.Range(1, 100))
            {
                comboBox_Time.Items.Add(i);
            }
            comboBox_Time.SelectedIndex = 0; // 默认选中 索引为 0 的项目
        }

        // 开始按钮单击
        private void btnStart_Click(object sender, EventArgs e)
        {
            // 因为是倒计时,所以要先确定倒计时的值,从 comboBox 控件中获取
            count_time = int.Parse(comboBox_Time.SelectedItem.ToString());
            btnStart.Enabled = false; // 修改控件使能状态
            btn_Pause.Enabled = true;
            timer1.Interval = 1000; // 这里确定定时器间隔时间(ms)
            timer1.Enabled = true; // 使能
            timer1.Start(); // 启动定时器
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // 判断 时间变量是否大于等于 0,如果大于0,则执行 if 语句里边的代码
            if (count_time >= 0)
            {
                // 如果等于 0 ,则退出程序
                if (count_time == 0)
                {
                    this.Close(); // 关闭窗口
                    Application.Exit();
                }
                label_CountDown.Text = $"再有({count_time} 秒)程序将会退出"; // 更新 label 标签
                this.Text = $"倒计时关闭退出程序 | 再有({count_time} 秒)程序将会退出 - @信念D力量"; // 更新窗口标题
                count_time--; // 时间变量 --
            }
        }

        // 暂停/继续按钮
        private void btn_Pause_Click(object sender, EventArgs e)
        {
            // 判断 pause_flag 标志来确认执行那段代码
            // pause_flag 默认值为 false,所以第一次点击暂停按钮后会暂停计时
            if(pause_flag == false)
            {
                timer1.Stop(); // 关闭定时器
                btn_Pause.Text = "继续";
                pause_flag = true; // 修改标志状态
            }
            else
            {
                timer1.Start(); // 开始定时器
                btn_Pause.Text = "暂停";
                pause_flag = false;
            }
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("https://www.z10.xin");
        }
    }
}

动图演示

项目代码下载

GitHub: https://github.com/FY2008/C–TimerDemo

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注