我想知道您是否可以创建一个时间间隔(例如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
将计时器添加到设计视图中的窗体。将“间隔”属性设置为1000。
将lst
声明移到窗体级别并添加一个窗体级别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
我建议您使用Microsoft的Reactive Framework(aka Rx)-NuGet System.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
,因此,如果您想在自然结束之前停止可观察对象,则只需调用.Dispose()
。