簡體   English   中英

C#倒數計時器然后執行某些操作

[英]C# Countdown Timer Then Do Something

隨處可見,但我隨處可見,有一種不同的方式可以進行倒數計時器。 終於找到了一些簡單的代碼。 時間到了,我該如何做。

這部分是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; 做這個。 無法弄清楚。

試試這個可能對你有用

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++;
}

試試這個可能對您有用。

由於有幾個可用的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;

解決方案:您可以將總秒數[TotalMinutes*60]分配給某個變量,並在每次Timer Tick事件引發時decrement

如果totalseconds值變為zero則通過調用timer.Stop()方法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();
        }

您可以嘗試執行以下操作。

在全局范圍內初始化。

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

如果您確實需要,請不要忘記驗證答案或將其標記為答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM