winforms 如何在第一次运行System.Windows.Form.Timer时忽略第一个间隔?

lnlaulya  于 2023-02-05  发布在  Windows
关注(0)|答案(1)|浏览(121)

我有一个定时器,每隔1秒重复一次。用户可以Start()Stop()定时器。

System.Windows.Form.Timer timer = new();
timer.Interval = 1000;
timer.Tick += (sender, e) =>
{
  // Perform the action...
}

问题是timer.Stop()在按下后立即React,而timer.Start()在1秒后才起作用,这可能会让用户感到奇怪。
所以我是这样解决的:
x一个一个一个一个x一个一个二个x
但是,有一个问题,计时器的间隔必须连续设置为1。一个计时器是好的,但有多个复杂的事情。
还有别的办法吗?

pqwbnv8z

pqwbnv8z1#

根据**@jmcilhinney@Zohar Peled**的评论,我这样解决了这个问题:

System.Windows.Form.Timer timer = new();
timer.Interval = 1000;
timer.Tick += (sender, e) =>
{
  StartOnFirstTimer();
}
private void StartOnFirstTimer()
{
  // Perform the action...
}
private void StartButton_Click(object sender, EventArgs e)
{
  StartOnFirstTimer();
  timer.Start();
}

它将定时器的Tick事件对应的部分提取到一个方法中,并在启动它之前调用它。

相关问题