间隔时间内的随机数VB.Net

问题描述 投票:0回答:2

我想知道您是否可以创建一个时间间隔(例如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
vb.net
2个回答
0
投票

将计时器添加到设计视图中的窗体。将“间隔”属性设置为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

0
投票

我建议您使用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()

© www.soinside.com 2019 - 2024. All rights reserved.