当前位置:编程学习 > VB >>

如何动态调用Timer控件?????

现在碰到这么一个问题,就是我需要建立多个动态Timer控件 

每个Timer触发时间间隔都不同,且每个Timer中执行的代码也是不同的

如何动态添加和删除这些Timer控件?如何使这些Timer和代码之间建立起关联,让我可以知道这个Timer是运行这段代码,另一个代码运行另一段代码?删除的时候也可以对应删除

有经验的给点思路啊?

我看到网络上有一个代码是用SetTimer API来创建的,但函数采用回调,如何往回调函数中传递参数呢?
--------------------编程问答-------------------- --------------------编程问答-------------------- 输入传人的参数可以使用模块变量直接使用 --------------------编程问答-------------------- 我还是不太清楚调用的方法,比如:

    Load Timer1(3)
    Timer1(0).Tag = "0"
    Timer1(0).Interval = 5000
    Timer1(0).Enable = True
    Timer1(1).Tag = "1"
    Timer1(1).Interval = 8000
    Timer1(1).Enable = True
    Timer1(2).Tag = "2"
    Timer1(2).Interval = 20000
    Timer1(2).Enable = True

我在程序中动态载入3个Timer控件 ,并且都启用这3个时钟

那么每个时钟的执行代码我该写在哪里?才能使系统能自动触发时钟,并运行里面的代码?

默认时钟的函数是
Private Sub Timer1_Timer()
end Sub
这里是无法传递参数的,这个函数里无法知道应该调用哪个Timer,楼上的,能更详细点教我吗?谢了 --------------------编程问答-------------------- Private Sub Timer1_Timer(Index As Integer)
end Sub

这个函数我试过,报:过程声明与同名事件或过程的描述不匹配 --------------------编程问答-------------------- --------------------编程问答-------------------- 实际上,你未必需要那么多 Timer。

例如,你可以使用一个 Timer 来完成多项定时任务:
1 将 Timer 的时间间隔设置为多个时长需求的最大公约数。
2 为每一个任务声明并实例化一个全局的计数器变量,和一个计数上限常数(时长需求与 Timer 间隔的商)。
3 在 Timer 事件中,为每一个任务写一段服务代码:
*    所有的计数器变量加 1;
*    如果到达某一任务计数上限,执行该任务服务,完成后计数器清零。
*    任务代码的顺序,就是任务的优先级。


--------------------编程问答-------------------- --------------------编程问答--------------------
引用 7 楼 soarsoar77 的回复:
我也在考虑,只用一个Timer了,我发现如果要完美的动态添加Timer,就是和实现VB多线程一个道理了,好像不现实

但只用一个Timer,我就只能把轮询时间最少定在10秒了,再少下去估计这个代码还没完成,下一个又触发了。


楼上的楼上,你确定
Private Sub Timer1_Timer(Index As Integer)
    Select Case Timer1(Index).Tag
    Case "1"
        Fun1
    Case "2"
        Fun2
    Case "3"
        Fun3
    End Select
End Sub
代码在VB中可以运行???????????你实际实验过吗?我这边报:过程声明与同名事件或过程的描述不匹配

Timer函数中是不能带任何参数的

你timer1的index要设置0,

当然测试过,况且,既然人家给你提供了代码,无论是否有测试,你自己试一下,不就知道了 --------------------编程问答-------------------- OK,我刚才测试了,好像是可行的

主要是我开始没有设置Index为0

谢谢楼上的了
补充:VB ,  API
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,