有一个数组,一秒种往里面添加一个数字,并且当前的数字显示在label2上面.我写的代码如下:Option ExplicitPrivate Sub Command1_Click()
Timer1(0).Enabled = True
End SubPublic Sub Form_Load()
Dim n As Integer
For n = 0 To 7
Timer1(n).Enabled = False
Timer1(n).Interval = 1000
Next
End Sub
Private Sub Timer1_Timer(Index As Integer)
If Index = 0 Then
Dim n As Integer
n = 0
n = n + 1
tp1(n) = n
Label2.Caption = Str(n)
End If
End Sub可是为什么label只出来一个数字就不变化了呢?还请各位高手指点!即时给分!!!!!!!

解决方案 »

  1.   

    改为:
    Private Sub Timer1_Timer(Index As Integer)
    If Index = 0 Then
        Static n As Integer
        'n = 0
        n = n + 1
        tp1(n) = n
        Label2.Caption = Str(n)
    End If
    End Sub
    试试看
      

  2.   

    吓死人!要用这么多时间控件吗?
    tp1(n) = n
    这句话有问题  数组控件要用 for …… next
      

  3.   

    Public Sub Form_Load()
    Dim n As Integer
    For n = 0 To 7
    Timer1(n).Enabled = False
    Timer1(n).Interval = 1000
    Next
    End Sub
    这些语句好象没用的,timer1要click触发,index就是0
      

  4.   

    你的这段程序,设计上的错误太多了。
    首先,在timer控件数组中实际能用的控件只有index=0的。
    在每次触发时,n因为是局部变量,每次都被初始化为0,然后加1,所有你
    tp1()数组的元素没有增加,而且在设置lable的caption时也犯了同样的错误。
      

  5.   

    问题很简单你的n是个局部变量,每次timer1(0)触发,n就归零所以label2始终显示1
    应定义为private n as integer(在Option Explicit区)
      

  6.   

    因为我做的是一个温度监控的程序,有8个通道,所以才会用那么多时钟.....有没有办法只用一个timer,然后通过触发,每秒钟往数组里加一个数字呢?
      

  7.   

    可以阿,你每次timer产生8个不就行了?
      

  8.   

    static n As Integer
      

  9.   

    可以增加数组
    static n(1 to 8) as integer通过一个定时器就可以了
      

  10.   

    你用的是控件数组,你的问题好像不需要这么多的Timer吧!
    dim a as integer,array(8)as integer
    private sub Timer1_Timer()
    array(a)=cstr(a)
    a=a+1
    Label1.Caption=cstr(array(a))
    End Sub