我使用DateTimePicker来选择一个dateTime值,看看我有多少时间,直到它为零:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
timeInSeconds = (DateTimePicker1.Value.Subtract(System.DateTime.Now)).ToString
'RichTextBox1.Text = RichTextBox1.Text + vbTab + timeInSeconds.ToString
timeInSeconds = timeInSeconds.Substring(0, timeInSeconds.LastIndexOf("."))
End Sub
上面的RichTextbox显示我大约每30秒钟松开一秒钟:
23:59:47.4060217
23:59:46.3939638
23:59:45.3799058
23:59:44.3648477
23:59:43.3517898
23:59:42.3377318
23:59:41.3236738
23:59:40.3096158
23:59:39.2955578
23:59:38.2814998
23:59:37.2674418
23:59:36.2533838
23:59:35.2393258
23:59:34.2242677
23:59:33.2112098
23:59:32.1981518
23:59:31.1830938
23:59:30.1690358
23:59:29.1549778
23:59:28.1409198
23:59:27.1268618
23:59:26.1128038
23:59:25.0997458
23:59:24.0856878
23:59:23.0716298
23:59:22.0575718
23:59:21.0435138
23:59:20.0284558
23:59:19.0143978
**23:59:18.0013398
23:59:16.9872818**
所以使用
timeInSeconds = timeInSeconds.Substring(0, timeInSeconds.LastIndexOf("."))
从23:59:18到23:59:16
为什么会这样?我做错了什么? 是时候了
(DateTimePicker1.Value.Subtract(System.DateTime.Now)).ToString
发生了我失去了吗?
定时器设置为每秒进行一次更改。
如何才能获得正确的结果?
提前致谢!
答案 0 :(得分:0)
尽量不要直接附加文本,而是将结果连接到tmp字符串中。 之后将tmp分配给textbox1.text。
我一直处在这样的情况下,我必须在每次forloop迭代中修改一个文本框,以十六进制显示一个字节,当我转换到以前的方法时,结果令人印象深刻。
试一试。
来自评论:
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
Dim timeInSeconds = (DateTimePicker1.Value.Subtract(System.DateTime.Now)).ToString
'RichTextBox1.Text = RichTextBox1.Text + vbTab + timeInSeconds.ToString
timeInSeconds = timeInSeconds.Substring(0, timeInSeconds.LastIndexOf("."))
TextBox1.Text &= timeInSeconds & vbNewLine
End Sub
我在1000 milisec计时器中测试了这段代码,没有问题。
答案 1 :(得分:0)
准确度会根据您正在做的事情以及同时发生的所有其他事情而变化。您可以通过每次重置间隔来纠正它。现在,当您正在执行的任务超过一秒时,这会发生故障,但它会使得滴答声尽可能接近第二个。
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Timer1.Enabled = False
'do your stuff here
Timer1.Interval = 1000 - Date.Now.Millisecond
Timer1.Enabled = True
End Sub
当我想要每小时或每小时发生一些事情时,我通常会使用这种技术。