2013-03-31 39 views
1

我有一个应用程序,根据我选择的速度,每秒约1次自动点击一个按钮。然而,它超时,所以我需要添加一个刷新到这个页面。经过这么多的点击后,我需要停止我的timer1,并且有一个WebBrowser1.Refresh(),然后一旦刷新完成,timer1与点击进行,并且过程完成一遍。我不知道如何开始这个,因为我从来没有必要停止计时器,但我一直在阅读它,它看起来相对容易。这里是我正在使用的脚本:如何在X秒/点击后停止计时器

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这么多的点击/秒后,并有一个刷新的网页浏览器,我不知道如何开始这一点,如果任何人都可以引导我。正确的曲目我会很感激。 (对不起,语法错误/在句子上运行,我是英语新手)

回答

1

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

I.e.

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事件上,您只需将1添加到number_of_ticks变量中即可。

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变量即可。 如果您的定时器间隔为500ms,则Timer_Tick事件每秒会上升两次,因此1秒后 - number_of_ticks将为2. 如果您希望定时器运行10秒,请将number_of_ticks设置为20.

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

祝你好运!

+0

嗯,我认为它会工作,但它没有。无论我做什么,Timer1都不会停止在脚本中,但它会在没有脚本的情况下停止。举一个大的例子,我在这里发布(因为我不能在这里发布所有内容):http:// pastebin。com/YeU9BBq9正如你可以看到你的整个代码一样,无论我在“如果不是number_of_ticks> 20 Then”上设置变量,它只是保持autoclicking,就好像它将else函数忽略为“Timer1.Enabled = False” (停止autoclicking)。 –

+0

我很抱歉,@Jack C.!我已经忘了脚本的一个非常重要的部分,请再次检查以上 - **我编辑了它!** – Alex

+0

哇!有效!谢谢ALOT亚历克斯。我一直在努力处理这段代码,我很高兴有人能够通过并帮助我。没必要说对不起:) –

2

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

+0

嗯是的,我知道我可以做Timer1.enabled = True或我可以做Timer1.start()我只是觉得第二个更容易。但这真的没有帮助我。 –