【问题标题】:My Timer is not reset when click on reset button C#单击重置按钮 C# 时,我的计时器未重置
【发布时间】:2020-07-24 21:01:31
【问题描述】:

初始化组件

System.Timers.Timer t; int h, m, s;

当我单击reset 按钮并将其变为00.00.00 时,我想reset 计时器,但是当我尝试使用codereset 时计时器停止。但是当我启动计时器并停止它时,它不会重置为00.00.00

timer的方法

private void OnTimeEvent(object sender, ElapsedEventArgs e)
{
        Invoke(new Action(() =>
        {
            s += 1;
            if (s == 60)
            {
                s = 0;
                m += 1;
            }
            if (m == 60)
            {
                m = 0;
                h += 1;

            }
            lbltime.Text = string.Format("{0}:{1}:{2}", h.ToString().PadLeft(2, '0'), 
          m.ToString().PadLeft(2, '0'), s.ToString().PadLeft(2, '0'));

        }));
}

表单加载事件

        t = new System.Timers.Timer();
        t.Interval = 1000;
        t.Elapsed += OnTimeEvent;
        t.Start();

       Reset Button Which is not working
        t.Dispose();
        

【问题讨论】:

  • 您需要重置变量,将它们设置为0Dispose() 不会为你这样做。
  • 也许StopWatch 会更适合您的需求?

标签: c# winforms timer


【解决方案1】:

试试这样的:

    Stopwatch stopwatch = Stopwatch.StartNew();
    private void OnTimeEvent(object sender, ElapsedEventArgs e)
    {
        Invoke(new Action(() => lbltime.Text = stopwatch.Elapsed.ToString("hh:mm:ss")));
    }

    private void OnResetButtonClick(object sender, EventArgs e)
    {
        stopwatch.Restart();
    }

这使用秒表来测量时间,并使用计时器来更新秒表中的标签。这也将更加准确,因为计时器不保证任何特定的滴答频率。

【讨论】:

  • 同样的想法是使用DateTime
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2017-04-05
  • 2013-07-05
  • 2013-09-25
  • 1970-01-01
  • 2018-09-02
相关资源
最近更新 更多