C# 显示每15秒循环一次的计时器

C# 显示每15秒循环一次的计时器,c#,winforms,C#,Winforms,我编写了这段代码,但是在屏幕上显示的时间循环和实际经过的时间之间有一个延迟 Timer t = new Timer(); int time = 15; string timestr; t.Interval = 1000; t.Tick += new EventHandler(Time); 我的猜测是,由于计时器在达到该间隔值之前不会触发其第一个事件,因此您将关闭一秒钟 快速修复方法是在启动事件时自己触发事件: t.Start(); Time(t, EventArgs.Empty); 我想你

我编写了这段代码,但是在屏幕上显示的时间循环和实际经过的时间之间有一个延迟

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


我的猜测是,由于计时器在达到该间隔值之前不会触发其第一个事件,因此您将关闭一秒钟

快速修复方法是在启动事件时自己触发事件:

t.Start();
Time(t, EventArgs.Empty);

我想你需要试试这个。在时间结束函数之前添加行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();
}

设置“Text”属性后,是否需要执行
label.Refresh()
以立即更新@斧头不,你不知道。有多远?首先,我不确定
计时器是否是您可以使用的最精确的计时器。你需要精确到什么程度?我不太确定我是否理解你的问题。是不是你想让它和墙上的时间同步?如果是,您需要它离您有多近,现在离您有多近?添加label.Update()是否正确;在您的计时器帮助中。如果不这样做,标签只会在程序空闲时在屏幕上更新。我不建议这样做,
Application.DoEvents()
应该少用。你希望它在这里有什么帮助?我应该把代码放在哪里?我把它放在计时器事件中,它给了我无限循环。@无论你在哪里启动计时器。从你的帖子上看不清楚你在哪里这么做。如果在程序开始时,我会覆盖表单的OnShown方法。
void Time(object sender, EventArgs e)
{
   if (time == 0)
   { time = 15; }
   if (time != 0)
   {
       time--;
       timestr = time.ToString();
       label.Text = timestr;
   }
   Application.DoEvents();
}