【问题标题】:How to increment in time?如何及时增加?
【发布时间】:2011-12-13 17:26:05
【问题描述】:

我正在创建一个秒表类型的应用程序。我使用标签来显示时间。当应用程序启动时,标签被初始化为“00:00:00”,我想每 1 秒增加一次它的时间。

我正在尝试使用计时器来完成这项工作。

【问题讨论】:

  • 您遇到了哪些问题?发布您到目前为止的代码。

标签: c# winforms timer stopwatch


【解决方案1】:

在您的计时器中获取系统时间,因此您的计时器必须具有非常小的间隔,例如 200 毫秒。要计算您的时间,只需计算 currentTime - startTIme 以秒为单位。

【讨论】:

    【解决方案2】:

    如果我说得对,它肯定会奏效。将初始标签文本设置为“00:00:00”。设置定时器间隔为1000。

    private void btnStartWatch_Click(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }
    
    private void btnPauseWatch_Click(object sender, EventArgs e)
    {
        timer1.Enabled = false;
    }
    
    int i = 1;
    DateTime dt = new DateTime();
    private void timer1_Tick(object sender, EventArgs e)
    {
        label1.Text = dt.AddSeconds(i).ToString("HH:mm:ss");
        i++;
    }
    

    希望对你有帮助。

    【讨论】:

    • 这种方法的问题是不能保证你的timer1_Tick 方法每秒都会被准确地调用。 Windows 唯一保证的是,在调用 timer tick 函数之间至少一秒钟。因此,如果您在使用计算机时让它运行一天,它的读取速度可能会有点慢。计算经过时间的正确方法是取当前时间并减去开始时间,给出从开始到现在所经过的时间量。
    • @GregHewgill:好点。但是,如果它是问题中所问的秒表,那么这种方法可能会很完美。
    【解决方案3】:

    我的一个应用程序上有一个计时器。

    private int _seconds;
    
    public string TimeDisplay
    {
        get
        {
            TimeSpan ts = new TimeSpan( 0, 0, _seconds );
            return string.Format("{0,2:00}:{1,2:00}:{2,2:00}", ts.Minutes, ts.Minutes, ts.Seconds);
        }
    }
    

    你所要做的就是让你的 timer_tick 甚至增加 _seconds 和 NotifyPropertyChanged() 如果你绑定到它。无论哪种方式,TimeDisplay 都会有你的结果。

    【讨论】:

    • 这种方法的问题是不能保证你的timer1_Tick事件方法每秒都会被调用。 Windows 唯一保证的是,在调用 timer tick 函数之间至少一秒钟。因此,如果您在使用计算机时让它运行一天,它的读取速度可能会有点慢。计算经过时间的正确方法是取当前时间并减去开始时间,给出从开始到现在所经过的时间量。
    【解决方案4】:

    希望能理解。

    private void Button1_Click(System.Object sender, System.EventArgs e)
    {
    
          Timer1.Interval = 1000;
          Timer1.Start();
    }
    private void Timer1_Tick(System.Object sender, System.EventArgs e)
    {
            this.Label1.Text = DateTime.Now.ToString("hh/mm/ss");
    
     }
    

    问候

    【讨论】:

    • DateTime.Now.ToString();它将计时器设置为系统时间。我在查询中提到我正在创建一个秒表类型的应用程序。它应该从 00:00:00 开始
    • @MuhammadAliDildar ,你不能计算系统时间和你的启动时间之间的差异吗?
    • @L.B:不需要。最好改变你的方法。它可能会变得非常混乱
    • @rapsalands 我不建议任何方法。这是对It will set the timer to the system time 的回答
    【解决方案5】:

    你想要TimeSpan structure

    类似:

    TimeSpan current = new TimeSpan(0);
    
    // In your update loop:
    
    current += TimeSpan.FromSeconds(1);
    

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2023-02-06
      • 1970-01-01
      • 2020-05-01
      • 2020-07-14
      • 1970-01-01
      相关资源
      最近更新 更多