我有一个名为isPressed
的布尔值,当所有键盘和鼠标按钮都处于活动状态时,该值处于活动状态。我想要实现的是当isPressed
布尔值为true
时启动计时器(最好使用秒表类)。虽然isPressed
为真,但保持计时器正常运行,并且只要isPressed
为false
,就会停止计时器并获得差异。在它停止并且它再次成立然后再次停止之后,将差异添加到前一个计时器。
我尝试使用此post中的代码,但我无法使用它。我尝试过这样的事情:
Stopwatch stopWatch = new Stopwatch();
TimeSpan ts = stopWatch.Elapsed;
if (isPressed)
{
stopWatch.Start();
}
else
{
stopWatch.Stop();
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
lblTime.Text = string.Format("{0}", elapsedTime);
}
lblTime
标签始终保持为0。
答案 0 :(得分:1)
我认为秒表可能是不必要的开销。您可以将时间isPressed设置为true并将时间isPressed设置为false,然后进行计算。
private long _pressedTicks;
private long _durationTicks;
private bool _pressed;
public bool Pressed
{
get { return _pressed; }
set
{
if (value == _pressed)
{
//Do nothing;
}
else if (value == false)
{
_durationTicks = DateTime.Now.Ticks - _pressedTicks;
_pressed = value;
}
else
{
_pressed = value;
_pressedTicks = DateTime.Now.Ticks;
}
}
}
答案 1 :(得分:0)
由于@Andrey Nasonov,我实际上设法让它工作,我所要做的就是实际设置Stopwatch stopWatch = new Stopwatch();
全球。