如何创建倒数计时器

时间:2015-12-13 18:57:29

标签: c# timer countdown

我想创建一个56小时的倒数计时器,它会在我的应用程序上动态显示倒计时。它应该在重新启动之间保持不变,即如果在重启之前我的计时器显示3小时过去然后重启后它应该从3小时继续我没有重置。我使用这种方法,我将当前日期+ 56小时写入文本文件,然后用它作为参考,但问题是“label6”上显示的倒计时不超过24小时(我想要它显示倒计时形式56:00:00然后到00:00:00)如果有任何其他方式,请分享..谢谢

我的代码:

public void timer()
    {
        string path1 = userdir + username + app + file;

        string triggerfile = path1;
        if (!File.Exists(triggerfile))
        {
            string ss = (DateTime.Now.AddHours(56).ToString());

            System.IO.File.WriteAllText(triggerfile, ss);
        }
        using (StreamReader sr = File.OpenText(triggerfile))
        {
            triggerdate = DateTime.Parse(sr.ReadToEnd());
        }
        var st = triggerdate;

        var timer = (new Timer() { Interval = 1000 });
        timer.Tick += (obj, args) => label6.Text = (TimeSpan.FromSeconds(20) - (st - DateTime.Now)).ToString("hh\\:mm\\:ss");
        timer.Enabled = true;

        if (DateTime.Now >= triggerdate)
        {

            label17.Text = "Times up";
            MessageBox.Show("YOU ARE PAST YOUR TRIAL HOURS..");
        }
    }

2 个答案:

答案 0 :(得分:0)

可能是这样的:

    var currentTime = (triggerdate.Subtract(DateTime.Now));
    string remainingTime = "" + (currentTime.Days*24 + currentTime.Hours) + ":" + currentTime.Minutes + ":" + currentTime.Seconds);

    var timer = (new Timer() { Interval = 1000 });
    timer.Tick += (obj, args) => label6.Text = remainingTime;
    timer.Enabled = true;

当您向日期添加56小时时,添加2天和8小时是相同的。您必须将DateTime的天数转换为小时,并将此小时数添加到DateTime的小时数,以获得总小时数。

我希望对你有所帮助。

答案 1 :(得分:0)

您可以使用TotalHours

TimeSpan属性
TimeSpan remaining = ... ; // compute remaining time
string label = string.Format("{0}:{1:mm\\:ss}", (int) remaining.TotalHours, remaining);