从设定日期到现在显示“剩余时间”

时间:2013-07-07 04:28:44

标签: c# time timer countdown elapsed

我有一个应用程序,当某个动作发生时,使用Visual studion配置管理器将确切的日期/时间写为 myTime ,您可以在其中添加设置。

这是我的设置: Properties.Settings.Default.voteTime

我希望我的应用程序一开始显示一个标签,显示“X时间到下次投票请求”

在我的背景下,投票必须每12小时完成一次

  

我希望标签基本上显示这些标签剩下多少时间   小时,从我上面提到的voteTime开始。

我尝试了很多技巧,但我在C#上是一个菜鸟,没有人为我工作,每次标签要么有默认文字,要么空白......

        DateTime voteTime = Properties.Settings.Default.voteTime;
        DateTime startDate = DateTime.Now;

        //Calculate countdown timer.
        TimeSpan t = voteTime - startDate;
        string countDown = string.Format("{0} Days, {1} Hours, {2} Minutes, {3} Seconds til launch.", t.Days, t.Hours, t.Minutes, t.Seconds);

上面,这就是我尝试的,然后我写了 label1.text = countDown;

提前致谢。

2 个答案:

答案 0 :(得分:6)

怎么做:

您可以使用System.Windows.Forms.Timer课程来继续显示剩余时间。您可以按以下步骤执行此操作:

创建并初始化计时器:

Timer timer1 = new Timer();

创建其tick事件方法并设置间隔以更新显示时间:

timer1.Tick += timer1_Tick;
timer1.Interval = 1000; //i am setting it for one second

现在启动计时器:

timer1.Enabled = true;
timer1.Start();

创建timer.tick事件方法并每秒更新标签:

void timer1_Tick(object sender, EventArgs e)
{
    TimeSpan TimeRemaining = VoteTime - DateTime.Now;
    label1.Text = TimeRemaining.Hours + " : " + TimeRemaining.Minutes + " : " + TimeRemaining.Seconds;
}

完整代码:

这是完整的代码。你可以复制并粘贴它:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Tick += timer1_Tick;
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();
        }

        Timer timer1 = new Timer();

        void timer1_Tick(object sender, EventArgs e)
        {
            TimeSpan TimeRemaining = VoteTime - DateTime.Now;
            label1.Text = TimeRemaining.Hours + " : " + TimeRemaining.Minutes + " : " + TimeRemaining.Seconds;
        }

答案 1 :(得分:2)

这是一种使用计时器控件的简单方法,它会每分钟更新标签:

    TimeSpan TimeLeft = new TimeSpan();
    DateTime voteTime = Properties.Settings.Default.voteTime;      
    public Form3()
    {
        InitializeComponent();
        TimeLeft = voteTime - DateTime.Now;
        label1.Text = TimeLeft.ToString(@"hh\:mm") + " til launch.";
        //This value is in milliseconds.  Adjust this for a different time 
        //interval between updates
        timer1.Interval = 60000;
        timer1.Start();
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        TimeLeft = voteTime - DateTime.Now;
        label1.Text = TimeLeft.ToString(@"hh\:mm") + " til launch.";
    }