第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
我只需要知道如何知道计时器的名称,或者识别当前计时器的东西。
谢谢!
答案 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