C#倒数计时器然后做点什么

时间:2013-12-21 04:12:19

标签: c# timer

随处可见,但在任何地方我看起来都有不同的方式来做倒数计时器。终于找到了一些简单的代码如何在时间完成后做一些事情。

这部分紧挨着InitializeComponent();

timerlabel1.Text = TimeSpan.FromMinutes(720).ToString();

private void countdownTimer()
{
    var startTime = DateTime.Now;

    var timer = new Timer() { Interval = 1000 };

    timer.Tick += (obj, args) =>
        timerlabel1.Text =
            (TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
            .ToString("hh\\:mm\\:ss");

    timer.Enabled = true;
}

这是我需要帮助的地方,如何在时间完成时让它做点什么。我试过如果timer.Enabled = false;做这个。无法弄明白。

4 个答案:

答案 0 :(得分:0)

试试这可能对你有用

var timer=new Timer();
timer.Interval=1000;
timer.tick += timer_Tick;
timer.Start();
int i=0;

void timer_Tick(object sender, EventArgs e)
{
if(i<TimeSpan.FromMinutes(720))
{
 timerlabel1.Text =
            (TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
            .ToString("hh\\:mm\\:ss");
}
else
{
timer.Stop();
/* do other work Here */
}
i++;
}

尝试这可能对您有用。

答案 1 :(得分:0)

由于有Timer个课程可用(System.Windows.Forms.TimerSystem.Threading.TimerSystem.Timers.Timer),我建议您使用System.Timers.Timer

它提供了Elapsed个事件,而不是Tick个事件。这就是你要找的东西。

// Create a timer with a ten second interval.
aTimer = new System.Timers.Timer(10000);

// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

// Set the Interval to 2 seconds (2000 milliseconds).
aTimer.Interval = 2000;
aTimer.Enabled = true;

答案 2 :(得分:0)

解决方案:每次[TotalMinutes*60]事件加注时,您都可以将总时间decrement分配给某个变量和Timer Tick

如果totalseconds值变为zero,则通过调用stop方法timer.Stop()计时器。

试试这个:

       public int tootalsecs = 720 * 60;
       private void countdownTimer()
       {
         var startTime = DateTime.Now;

         var timer = new Timer() { Interval = 1000 };

         timer.Tick += (obj, args) =>
         {
            if (tootalsecs==0)
            {
                timer.Stop();
            }
            else
            {
                timerlabel1.Text =
               (TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
                   .ToString("hh\\:mm\\:ss");
                tootalsecs--;
            }
        };
             timer.Start();
        }

答案 3 :(得分:0)

您可以尝试执行以下操作。

在全球范围内初始化。

var target;
timerlabel1.Text =target= DateTime.Now.Add(TimeSpan.FromMinutes(720));

添加一个计时器并在timer1_Tick中编写以下代码

var span = targetTime - DateTime.Now;

 if (span.TotalSeconds > 0)
  {
//it will continue till the time ends. 
    var temp = span.ToString();
    temp=temp.Substring(0, 8);
    timerlabel1.Text = temp;
  }
 else
//do your work here

如果符合您的需要,请不要忘记验证答案或标记为答案