Public Class Form1
Private s As Short = 0
Private s1 As Short
Private s2 As Short
Private d(5) As Short
Private da(5) As Short
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = CShort(Label1.Text) + 1
s += 1
s1 += 1
If s1 = 6 Then
s1 = 0
da = d
Else
d(s1 - 1) = CShort(Label1.Text)
End If
If s = 5 Then
Timer2.Start()
End If
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
s2 += 1
If s2 = 6 Then
s2 = 0
Else
Label2.Text = da(s2 - 1)
End If
End Sub
End Class
lable1里每秒显示一个数据,每5秒把显示过得数据记录到d(5)
我想在lable2里显示前5秒里的lable1里显示过的数据,(也就是lable2里如何延迟5秒,显示LABLE1里显示过的数据)该如何修改上面代码,谢谢!!!
------解决方案--------------------
Structure myData
Dim time As Date '数据产生的时间
Dim data As String '数据内容
Dim inHisLog As Boolean '数据是否回显过
End Structure
试试这个。每秒除了显示label1外,还检索历史的myData,将5秒前的、且inHisLog=false的全扔进label2,并且把inHisLog标为True
或者用二维数组也一样,就是没这么方便
------解决方案--------------------

Public Class Form1
Dim strX(5) As String
Private Sub tmr_Tick(sender As System.Object, e As System.EventArgs) Handles tmr.Tick
lbl1.Text = Int(Rnd(222) * 90000 + 10000) '第一个label显示数值
For i = 5 To 1 Step -1
If Not (strX(i - 1) Is Nothing) Then strX(i) = strX(i - 1) '依次后移各个数组项
Next
strX(0) = lbl1.Text '在第一位记录最新的数
If Not (strX(5) Is Nothing) Then lbl2.Text = strX(5) '只有在数组全填满的时候,第二个label才会开始显示
txtView.AppendText(Now & ":" & vbTab & lbl1.Text & vbTab & lbl2.Text & vbCrLf) '两个label的历史记录
End Sub
End Class