Timer capricieux...

unguest_online
Messages postés
9
Date d'inscription
dimanche 11 février 2018
Statut
Membre
Dernière intervention
17 février 2018
- Modifié le 11 févr. 2018 à 19:44
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
- 12 févr. 2018 à 21:48
Bonsoir (ou bonjour c'est selon...),

Après insertion d'un Timer dans ma fenêtre Design, je voudrais faire en sorte que :

Timer1.Interval = TrackBar1.Value

Le problème, c'est que ce code ne marche pas, il y aurait eu une erreur avec la valeur 0, pourtant impossible...
Je vous laisse le code source en dessous, merci d'avance à tous ceux qui prendront le temps de m'aider ;)

 Public Class Form

    Private Sub TrackBar_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar.Scroll
        If TrackBar.Value = 0 Or 1 Then
            TrackBar.Value = 1
            Timer1.Interval = 1
        End If
        Timer1.Interval = TrackBar.Value / 2
        Label3.Text = TrackBar.Value & " ms"
    End Sub

    Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        TextBox1.Clear()
        TextBox1.Focus()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        If Label5.Visible = True Then
            Label5.Visible = False
        Else
            Label5.Visible = True
        End If

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Start()
    End Sub
End Class 

4 réponses

NHenry
Messages postés
14927
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
162
11 févr. 2018 à 20:08
En VB.NET pensez à activer "Option Explicit" et "Option Strict"

If TrackBar.Value = 0 Or 1 Then

Si TrackBar.Value = 0 OU VRAI Alors
C'est ce que tu as écris.

Et si Interval vaut 0, cela désactive juste le Timer, pas d'erreur.
1
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
11 févr. 2018 à 20:48
Bonsoir
je voudrais faire en sorte que :

Timer1.Interval = TrackBar1.Value



Mais dans ton code, quand ça plante.
Timer1.Interval = TrackBar.Value / 2

Je parie (car tu n’as pas précisé ce que vaut TrackBar.Value à ce moment-là) je parie donc, que TrackBar.Value vaut 1.
1/2 = 0.5 casté en Integer (Interval est souvent un Integer selon le type de timer) ça fait 0.

Si mon pari est juste, alors ceci corrigera ton problème.
If TrackBar.Value = 0 Or 1 Then
            TrackBar.Value = 1
            Timer1.Interval = 1
        Else
        Timer1.Interval = TrackBar.Value / 2
End IF

1
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
12 févr. 2018 à 07:50
Hier soir je n’avais pas intégré la remarque (fort judicieuse) de NHenry.
If TrackBar.Value = 0 Or  TrackBar.Value = 1 Then
            TrackBar.Value = 1
            Timer1.Interval = 1
        Else
        Timer1.Interval = TrackBar.Value / 2
End IF

Ou plus simplement
If TrackBar.Value < 2 Then
            TrackBar.Value = 1
            Timer1.Interval = 1
        Else
        Timer1.Interval = TrackBar.Value / 2
End IF
0
unguest_online
Messages postés
9
Date d'inscription
dimanche 11 février 2018
Statut
Membre
Dernière intervention
17 février 2018

12 févr. 2018 à 21:12
OK merci beaucoup pour votre aide je n'avais pas pensé au fait que le
Timer1.Value
était en Integer... ce qui évidemment pose quelques soucis.
0
Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
12 févr. 2018 à 21:48
Si cela te convient, pense à marquer le sujet résolu.
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#marquer-un-sujet-resolu

Ps: c’est trakbar.value et timer1.interval
Ps2: selon le type de timer, interval est parfois un timespan
0