Vb.net / problème d'arret de timer

User -  
f894009 Messages postés 17413 Statut Membre -
Bonjour,

Bonsoir,

Je suis entrain de faire un petit programme qui click sur un lien situé sur une page web, jusqu'as ce que ce lien n'y sois plus et ensuite le timer s'arrête et m'affiche une messagebox.

Mon problème est que le timer ne s'arrête pas;
Voici mon code

Public Class Form1 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
        WebBrowser1.Navigate(TextBox1.Text) 
    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
        Timer1.Start() 
    End Sub 

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
        For Each CurElement As HtmlElement In Me.WebBrowser1.Document.GetElementsByTagName("a") 
            If InStr(CurElement.InnerHtml, "Suivant") Then 
                CurElement.InvokeMember("click") 
            End If 
        Next 
    End Sub 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
        Timer1.Stop() 
    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
        
    End Sub 
End Class 


Et pour arrêter le timer, j'ai rajouter ceci :

Public Class Form1 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
        WebBrowser1.Navigate(TextBox1.Text) 
    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
        Timer1.Start() 
    End Sub 

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
        For Each CurElement As HtmlElement In Me.WebBrowser1.Document.GetElementsByTagName("a") 
            If InStr(CurElement.InnerHtml, "Suivant") Then 
                CurElement.InvokeMember("click") 
            Else 
                Timer1.Stop() 
                MessageBox.Show("Il n'y as plus de lien suivant") 
            End If 
        Next 
    End Sub 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
        Timer1.Stop() 
    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
        
    End Sub 
End Class 



Le problème c'est qu'il m'affiche bien le messagebox, mais il le répète infiniment vu que le timer ne s'arrête pas !! et le seul moyen de l'enlever et de passer par le gestionnaire des taches :)


Auriez-vous une solution à mon problème ?
Je vous remercie, bonne soirée

2 réponses

User
 
Personne ?
0
f894009 Messages postés 17413 Statut Membre 1 715
 
Bonjour,

'Visual Basic 2005 ou 2008
Public Sub TimerOn(ByRef Interval As Short)
If Interval > 0 Then
' Start the timer.
Timer1.Enabled = True
Else
' Stop the timer
Timer1.Enabled = False
End If
End Sub

A Voir

Bonne suite
0