检查倒数计时器是否为 0

本文关键字:是否 计时器 倒数 检查 | 更新日期: 2023-09-27 18:36:32

我有一个基于倒数计时器的脚本。我希望当时间达到 0 时,计时器停止并显示一条消息。代码 ID 如下:

public partial class simulare : Form
    {
        private admin admin;
        Timer timer = new Timer();
        public simulare(admin admin)
        {
            InitializeComponent();
            this.admin=admin;
            label2.Text = TimeSpan.FromMinutes(0.1).ToString();
        }
        private void simulare_Load(object sender, EventArgs e)
        {
            var startTime = DateTime.Now;
            timer = new Timer() { Interval = 1000 };
            timer.Tick += (obj, args) =>
            label2.Text = (TimeSpan.FromMinutes(0.1) - (DateTime.Now - startTime)).ToString("hh'':mm'':ss");
            timer.Enabled = true;
            timer.Start();
            if (condition)
            {
                timer.Stop();
                MessageBox.Show("Done!");
            }
        }
    }

我尝试了这些条件,但没有成功:

if (timer.ToString() == TimeSpan.Zero.ToString())
if (label2.Text.ToString() == TimeSpan.Zero.ToString())
if (label2.Text == TimeSpan.Zero)

检查倒数计时器是否为 0

您可以提取计算并将结果分配给 TimeSpan 变量,然后检查该 TimeSpan 变量中的秒数是否等于零

void simulare_Load(object sender, EventArgs e)
{
    var startTime = DateTime.Now;
    timer = new System.Windows.Forms.Timer() { Interval = 1000 };
    timer.Tick += (obj, args) =>
    {
        TimeSpan ts = TimeSpan.FromMinutes(0.1) - (DateTime.Now - startTime);
        label1.Text = ts.ToString("hh'':mm'':ss");
        if (ts.Seconds == 0)
        {
            timer.Stop();
            MessageBox.Show("Done!");
        }
    };
    timer.Start();
}

首先,检查Load事件中的任何内容都不起作用。该代码仅运行一次(在表单加载时)。

所以你需要一个更复杂的tick事件,我会把它放到一个实际的函数中,而不是一个lambda:

private int countDown = 50; //Or initialize at load time, or whatever
public void TimerTick(...)
{
    label2.Text = (TimeSpan.FromMinutes(0.1) - (DateTime.Now - startTime)).ToString("hh'':mm'':ss");
    countDown--;
    if (countDown <= 0)
       timer.Stop();
}

我在这里使用int计数器,因为检查视图属性(本例中的文本)不是一个很好的设计/实践。如果你真的想要一个TimeSpan,我仍然会保存它,而不是直接检查Text属性或字符串。