0

我编写了这段代码,但是屏幕上显示的时间循环和确切的经过时间之间存在延迟。

Timer t = new Timer();
int time = 15;
string timestr;
t.Interval = 1000;
t.Tick += new EventHandler(Time);

void Time(object sender, EventArgs e)
{
    if (time == 0)
    { time = 15; }
    if (time != 0)
    {
        time--;
        timestr = time.ToString();
        label.Text = timestr;
    }
}
4

2 回答 2

2

我的猜测是,您将延迟一秒钟,因为计时器在达到该间隔值之前不会触发其第一个事件。

一个快速的解决方法是在你启动它时自己触发它:

t.Start();
Time(t, EventArgs.Empty);
于 2013-05-24T16:14:34.250 回答
0

我想你需要试试这个。在 Time 函数结束之前添加行 Application.DoEvents()。

void Time(object sender, EventArgs e)
{
   if (time == 0)
   { time = 15; }
   if (time != 0)
   {
       time--;
       timestr = time.ToString();
       label.Text = timestr;
   }
   Application.DoEvents();
}
于 2013-05-24T16:52:44.540 回答