1
我有一个秒表计时器,我已经添加到我的程序中。它在我的Win 7机器以及我试过的Vista机器上运行良好,但在XP中,定时器启动时小时和分钟零点消失,但如果重置计时器,则会返回。这是我的计时器的所有代码。我删除了一切似乎没有必要诊断问题的东西:标签显示Timespan在XP中消失但不是在较新的Windows版本中
DateTime startTime, stopTime;
TimeSpan stoppedTime;
bool reset;
private void btnStopwatchStart_Click(object sender, EventArgs e)
{
// Start timer and get starting time
if (reset)
{
reset = false;
startTime = DateTime.Now;
stoppedTime = new TimeSpan(0);
}
else
{
stoppedTime += DateTime.Now - stopTime;
}
stopwatchTimer.Enabled = true;
}
private void btnStopwatchReset_Click(object sender, EventArgs e)
{
// Reset displays to zero
reset = true;
lblElapsed.Text = "00:00:00";
}
private void btnStopwatchPause_Click(object sender, EventArgs e)
{
// Stop timer
stopTime = DateTime.Now;
stopwatchTimer.Enabled = false;
}
private void stopwatchTimer_Tick(object sender, EventArgs e)
{
DateTime currentTime;
// Determine elapsed and total times
currentTime = DateTime.Now;
// Display times
lblElapsed.Text = HMS(currentTime - startTime - stoppedTime);
}
private string HMS(TimeSpan tms)
{
// Format time as string, leaving off last six decimal places
string s = tms.ToString();
return (s.Substring(0, s.Length - 6));
}
谢谢!它在Win7机器上运行得很好(使用.NET 4.0)。它将在几小时内在XP机器上进行测试。 – EvanRyan 2010-06-02 15:47:12
是的,TimeSpan.ToString()在.NET 4.0中进行了修改。我给你的替换将在任何版本的.NET上一致地工作 – 2010-06-02 15:48:59