我想知道你是否可以创建一个时间间隔,比如1秒来显示随机数。可以这样做吗?我应该如何进行?
Dim Rnd As New Random() 'No seed!
Dim lst As New List(Of Integer)
For i = 0 To 4
lst.Add(Rnd.Next(0, 81))
Next
For Each i In lst
TextBox1.Text &= i.ToString & vbCrLf
Next
我建议您使用Microsoft的Reactive Framework(又名Rx(-NuGetSystem.Reactive.Windows.Forms
并添加using System.Reactive.Linq;
,然后您可以这样做:
Observable.
Interval(TimeSpan.FromSeconds(1.0)).
Take(5).
Select(Function (x) Rnd.Next(0, 81).ToString()).
ObserveOn(TextBox1).
Subscribe(Sub (x) TextBox1.Text &= x & Microsoft.VisualBasic.vbCrLf)
Subscribe
方法返回一个IDisposable
,所以如果您想在if自然结束之前停止可观察,那么只需调用.Dispose()
。
在设计视图中将计时器添加到窗体中。将"间隔"属性设置为1000。
将lst
声明移动到Form级别,并添加Form级别的index
变量。然后,该列表可以由多个事件过程查看,并且索引将在对Tick
事件的调用之间保留其值。
填写完列表后,启动计时器。在Tick
事件(每1000毫秒自动发生一次(中,一次填写一个数字。然后增加索引,以便下次Timer
勾选时,下一个数字将出现在文本框中。当我们到达最后一个索引时,停止Timer
。
Private lst As New List(Of Integer)
Private index As Integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Rnd As New Random() 'No seed!
For i = 0 To 4
lst.Add(Rnd.Next(0, 81))
Next
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
TextBox1.Text &= lst(index).ToString & vbCrLf
If index < lst.Count - 1 Then
index += 1
Else
Timer1.Stop()
End If
End Sub