我正在尝试使用秒表和TimeSpan。
声明:
Dim swTimer As New Stopwatch
Dim tsCD As TimeSpan
tsCD = TimeSpan.FromMinutes(2)
我已经在计时器(tmrCountingDown)上成功创建了一个“ .Tick”事件,该事件的倒计时如下:
Private Sub tmrCountingDown_Tick(sender As Object, e As EventArgs) Handles tmrCountingDown.Tick
Dim SamplesTS As TimeSpan = tsCD - swTimer.Elapsed
btnDisplay.Text = String.Format("{0}{1}:{2:00}", SamplesTS.Hours, SamplesTS.Minutes, SamplesTS.Seconds)
End Sub
这使我可以成功倒计时并在按钮“ btnDisplay”上显示分钟和秒。
侧面问题:当前该行代码显示格式为00:00。有没有办法将其更改为简单的0:00?其中第一组是分钟(两位数),第二组是秒(两位数?)
现在是我遇到的主要问题。当我单击按钮时,应该将.FromMinutes(2)更改为.FromMinutes(2.5)并刷新倒数,而 不重置秒表(我需要保持经过的时间) 就像这样:
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
Counter += 1 'Just an integer counter that I have
tsCD = TimeSpan.FromMinutes(2.5)
End Sub
我第一次单击btnDisplay时,它没有执行预期的操作:重置整个倒计时并从2:30开始。相反,它似乎只增加了30秒。当我第二次单击它时,它什至没有任何作用。
问题:如何将每次按钮单击的TimeSpan倒计时刷新至2.5秒,而又不将实际的秒表和计时器弄得一团糟?
任何帮助将不胜感激!
答案 0 :(得分:2)
这样想:
如果将所有这些组合在一起,则意味着当您按下按钮时,您想要将“总时间”更改为“当前经过的时间+ 2.5分钟”。换句话说:
tsCD = swTimer.Elapsed + TimeSpan.FromMinutes(2.5)
作为一个元注释,我鼓励您使用真正清晰的描述性名称-理想情况下,不要使用类型指定的前缀,除非它们确实有用(我认为它们不在这里)。如果您给TimeSpan
命名为totalCountdownTime
或类似名称,我怀疑您已经解决了这个问题。当然,当名称不能传达所有内容时,您可以在XML注释中添加更多详细信息:)