随处可见,但在任何地方我看起来都有不同的方式来做倒数计时器。终于找到了一些简单的代码如何在时间完成后做一些事情。
这部分紧挨着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;做这个。无法弄明白。
答案 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.Timer
,System.Threading.Timer
和System.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
如果符合您的需要,请不要忘记验证答案或标记为答案