【问题标题】:Dynamic timers with dynamic Ticks具有动态刻度的动态计时器
【发布时间】:2013-12-05 01:55:48
【问题描述】:

第 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

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

谢谢!

【问题讨论】:

  • 我有visual basic 2012,谢谢:)
  • 对不起,我以为 VBA 就是 Visual Basic 的意思。
  • @eKeR VBA is an implementation 在 VB6 中用于 Excel 宏等应用程序。更多信息:stackoverflow.com/tags/vba/info
  • @SysDragon 感谢您的回复,我现在很清楚 :)

标签: vb.net dynamic timer


【解决方案1】:

您的目标项目到底是什么?

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

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 切换为新间隔的值。我的建议是使用公共变量(不包含在子例程中)来实现动态能力。

【讨论】:

  • 但是我会有N个(自然数)个定时器(我不知道N个数,这会增加或减少)。我无法制作 N 个 Events.Tick。我想要制作 N 个计时器,并且每个计时器都具有相同的 Event.Tick 结构,但内部的变量不同。例如:新的timer1有var“Hello”,新的timer2有var“Bye”,那么当timer1调用一个tick事件时,我显示Hello,当timer2调用相同的tick事件时,我显示Bye。如何?例如字典,“timer1”=“hello”,“timer2”=“bye”。然后我只需要知道事件中计时器的名称。谢谢!
  • 朋友,你到底想编程什么?
  • 好的,我需要添加带有计时器的任务来检查每个计时器的网络链接,它必须有一个不同的时间间隔,具体取决于网络的日期。每个计时器都做同样的事情,但链接不同,有时我需要更改检查链接的计时器的间隔。我需要做一些东西来添加 N 个计时器(每个计时器有 1 个链接)。为此,我需要每个计时器使用不同的变量触发相同的 event.tick。我不知道我是否解释得很好:P。谢谢!
  • 嗯,也许您需要从容器中投射这些计时器。看看这个question,除了把表格当作定时器。
  • 另外,如果这对您有帮助,别忘了告诉我。
【解决方案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

【讨论】:

  • 很高兴能帮上忙
猜你喜欢
  • 2012-11-11
  • 2012-10-18
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 2020-02-07
  • 2012-10-19
  • 2016-04-21
相关资源
最近更新 更多