具有动态刻度的动态计时器

时间:2013-12-05 01:55:48

标签: vb.net dynamic timer

第1点: 是否可以在VB上使用动态事件Ticks制作动态计时器?

好的,我知道如何制作一个新的计时器,我知道如何添加一个事件,用:

AddHandler Timer1.Tick, AddressOf OnTimedEvent
AddHandler Timer2.Tick, AddressOf OnTimedEvent
.
.
AddHandler TimerN.Tick, AddressOf OnTimedEvent

使用N整数。

但我希望事件是动态的,然后我需要知道当前计时器的某些内容,就像计时器的名称一样,知道在每种情况下我需要使用哪些变量。

简单的例子:

Private Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)

MsgBox(Show the name of present timer)

End Sub 

好吧,也许还有其他形式,但我是新手。我的工作最终是:创建动态计时器,每次都会有一个特定的Event.Tick具有相似的结构,但变量不同。

第2点: 我也需要改变当前计时器的间隔。

简单的例子:

Private Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)

MsgBox(Show the name of present timer)

TimerPresent.Interval = XXXXX

End Sub 

感谢。

编辑:感谢Malky.Kid。

现在我拥有它:

AddHandler Timer1.Tick, AddressOf OnTimedEvent
AddHandler Timer2.Tick, AddressOf OnTimedEvent
.
.
AddHandler TimerN.Tick, AddressOf OnTimedEvent

Public Sub TickingFunction(ByVal TheTimer As System.Windows.Forms.Timer, ByVal newInterval As Integer)

    MsgBox(TheTimer.Name?????)
    TheTimer.Interval = newInterval

End Sub

Private Sub OnTimedEvent(sender As Object, e As EventArgs)

    TickingFunction(sender, SomeInterval)

End Sub

我只需要知道如何知道计时器的名称,或者识别当前计时器的东西。

谢谢!

2 个答案:

答案 0 :(得分:2)

您的目标究竟是什么?

也许你可以创建一个公共子程序,从那里你可以在你调用它时操纵它们各自的变量

Public Sub TickingFunction(byval TheTimer as Timer, byval newInterval as integer)
    MsgBox(TheTimer.Name.Tostring)
    TheTimer.Interval = newInterval
End Sub

现在您可以使用相应的计时器调用它:

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
     Dim newINterval as integer = 0
     TickingFunction(Timer1, newInterval)
End Sub

注意只需使用新间隔的值切换newInterval即可。我的建议是使用一个公共变量(不包含在子程序中)来实现动态能力。

答案 1 :(得分:2)

最后我得到了我的解决方案:

感谢 Malky.Kid 。这是一个有点编辑,他怎么做

现在我拥有它:

AddHandler Timer1.Tick, AddressOf OnTimedEvent
AddHandler Timer2.Tick, AddressOf OnTimedEvent
.
.
AddHandler TimerN.Tick, AddressOf OnTimedEvent

对于每个计时器,您可以定义TimerN.Tag =“SomeID”,TimerN.Interval = X Integer

Public Sub TickingFunction(ByVal TheTimer As System.Windows.Forms.Timer, ByVal newInterval As Integer)

    MsgBox(TheTimer.Tag) 'this gives the name/tag of timer
    TheTimer.Interval = newInterval 

End Sub

每个计时器都在此处触发,但每个计时器都是调用相同函数的不同对象

Private Sub OnTimedEvent(sender As Object, e As EventArgs)

    TickingFunction(sender, SomeInterval)

End Sub