我没等,但我猜测同样的问题是分钟.当计时器倒计时并且秒数变为1时,它会变为59而不是先播种0.我不确定计时器的逻辑,如果在向上/向下计数时它应该显示0.
当它正在计算它的工作正常时,它在59之后显示为0.
private void timer1_Tick(object sender, EventArgs e)
{
if (countUpCheckbox.Checked)
{
Invoke(new Action(() =>
{
seconds += 1;
if (seconds == 60)
{
seconds = 0;
minutes += 1;
}
if (minutes == 60)
{
minutes = 0;
hours += 1;
}
richTextBox1.Text = string.Format("{0}:{1}:{2}", hours.ToString().PadLeft(2, '0'), minutes.ToString().PadLeft(2, '0'), seconds.ToString().PadLeft(2, '0'));
}));
}
if (countdownCheckbox.Checked)
{
Invoke(new Action(() =>
{
seconds -= 1;
if (seconds == 0)
{
seconds = 59;
minutes -= 1;
}
if (minutes == 0)
{
minutes = 59;
hours -= 1;
}
richTextBox1.Text = string.Format("{0}:{1}:{2}", hours.ToString().PadLeft(2, '0'), minutes.ToString().PadLeft(2, '0'), seconds.ToString().PadLeft(2, '0'));
}));
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用TimeSpan,让它计算分钟/秒:
private void timer1_Tick(object sender, EventArgs e)
{
Invoke(new Action(() =>
{
if (countUpCheckbox.Checked)
{
timespan += TimeSpan.FromSeconds(1);
}
if (countdownCheckbox.Checked)
{
timespan -= TimeSpan.FromSeconds(1);
}
richTextBox1.Text = string.Format("{0}:{1}:{2}", timespan.Hours.ToString().PadLeft(2, '0'), timespan.Minutes.ToString().PadLeft(2, '0'), timespan.Seconds.ToString().PadLeft(2, '0'));
}));
}
Run Code Online (Sandbox Code Playgroud)
在您的班级初始化它,如下所示:
private TimeSpan timespan = new TimeSpan(0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |