【问题标题】:How to stop timer after X seconds/clicks如何在 X 秒/点击后停止计时器
【发布时间】:2013-03-21 14:18:24
【问题描述】:

我有一个应用程序,它会根据我选择的速度每秒自动为我点击 1 次按钮。但是,它超时了,所以我需要向此页面添加刷新。我需要在多次点击后停止我的timer1 并拥有一个WebBrowser1.Refresh(),然后一旦刷新完成,timer1 就会随着点击而启动,并且该过程再次完成。我不知道如何开始这个,因为我以前从来没有停止过计时器,但我一直在阅读它,它看起来相对容易。这是我正在使用的脚本:

 Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If RadioButton1.Checked = True Then
        Timer1.Interval = 40
    ElseIf RadioButton2.Checked = True Then
        Timer1.Interval = 100
    Else
        Timer1.Interval = 500
    End If

    If ((WebBrowser1.IsBusy)) Then



    Else
        WebBrowser1.Document.GetElementById("NewGamertag").SetAttribute("value", txtTurbo.Text)


        Timer1.Start()


    End If


End Sub

如你所见,一旦按钮被点击一次,它就会一遍又一遍地执行Timer1.Start(),在Timer1.start()的代码中你可以看到点击一次的代码:

WebBrowser1.Document.GetElementById("claimIt").InvokeMember("Click")

哪个有效,但我需要在多次点击/秒后停止我的Timer1 并刷新网络浏览器。我不知道如何开始,如果有人能引导我走上正确的轨道,我会很感激的。 (抱歉语法不好/句子跑题,我是英语新手)

【问题讨论】:

    标签: vb.net browser refresh


    【解决方案1】:

    您的代码存在几个问题。首先,您似乎没有在任何地方使用 Timer_TickTimer_Elapsed 事件(我不知道您使用的是哪个 Timer;.NET Framework 中有多个计时器类),这是 ACTUAL 事件在间隔完成时被解雇。其次,可以通过设置它的Enabled 属性来启用/禁用定时器,而你在任何地方都没有这样做。您还应该看看 Enabled 属性如何与 Interval 属性一起工作,以确保它的行为完全符合您的预期。

    【讨论】:

    • 嗯,是的,我知道我可以做 Timer1.enabled = True 或者我可以做 Timer1.start() 我只是觉得第二个更容易。不过,这确实对我没有帮助。
    【解决方案2】:

    最简单但不一定是“最干净”的方法是声明一个公共整数变量。

    Public Class Form1
    'Public variables are decleared here
    Dim number_of_ticks as integer = 0
    
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
    End Sub
    

    在 Timer_Tick 事件中,您只需将 number_of_ticks 变量加 1。

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        If Not number_of_ticks > 100 Then
    '[EDIT:] I forgot to increase the number_of_ticks
        number_of_ticks += 1
            'put your code here
        Else
            'number_of_ticks has exceed the maximum amount of allowed ticks
            Timer1.Stop()
        End If
    End Sub
    

    [编辑:] number_of_ticks += 1 每次运行代码时都会增加一次变量。 再次为我的错误道歉。

    要限制允许的刻度数量,只需增加/减少 number_of_ticks 变量。 如果您的计时器间隔为 500 毫秒,则 Timer_Tick 事件将每秒引发两次,因此一秒后 - number_of_ticks 将为 2。 如果您希望计时器运行 10 秒,请将 number_of_ticks 设置为 20。

    如果这没有帮助,请质疑我的回答。

    祝你好运!

    【讨论】:

    • 好吧,我认为它会起作用,但它没有。无论我做什么,Timer1 都不会因为你的脚本而停止,但它会在没有你的脚本的情况下停止。举一个大的例子,我在这里发布(因为我不能在这里发布所有内容):pastebin.com/YeU9BBq9 正如你在整个代码中看到的那样,无论我在“If Not number_of_ticks > 20”上设置什么变量然后”,它只是保持自动点击,就好像它忽略了“Timer1.Enabled = False”的else函数(停止自动点击)。
    • 我很抱歉,@Jack C.!我忘记了脚本的一个非常重要的部分,请在上面再次检查 - 我已经编辑了它!
    • 哇!有效!非常感谢亚历克斯。我已经在这段代码上苦苦挣扎了一段时间,我很高兴有人可以帮助我。不用说对不起:)
    • 别担心,@Jack C.!我可以告诉你,你对 vb.net 不太熟悉,所以我想我可以帮助你 - 一开始一切都有些苛刻 :) 如果你再次需要帮助,请记住我 ;)
    • 谢谢你!是的,我对 VB 还很陌生,我做 PHP 已经有一段时间了,但没有很多 VB。还有最后一个问题,你知道如何清除变量number_of_ticks,比如重置为0吗?
    猜你喜欢
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多