IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[débutant] [VB.NET] Timer + label + checkbox ...


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut [débutant] [VB.NET] Timer + label + checkbox ...
    Voila je décrit la situation .

    Attente : Je voudrait lors d'un clik sur une CheckBox déclencher un Timer et déclencher une fonction qui fait ce déplacer un label .

    Je bloque sur le fait de cliquer sur la Checkbox et qu'un timer ce lance pour que ma fonction ( qui contient un "pour" ) s'arrette une foi que l'on reclike sur la Chekbox .

    Mon code :

    Evenment clik chekbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub cbActiver_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbActiver.CheckedChanged
     
            If Me.cbActiver.Checked Then
                Me.tmrTimer1.Enabled = True
                Call Timer()
            Else
                Me.tmrTimer1.Enabled = False
     
            End If
        End Sub
    Ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Timer()
            Dim MaX As Integer
            Dim MaX1 As Integer
            MaX1 = lblclasse.Left
            Do
                lblclasse.Left = lblclasse.Left + 1
                If lblclasse.Left >= +270 Then
                    lblclasse.Left = MaX
            End If
            Loop While Me.cbActiver.Checked = False
        End Sub
    Je n'arrive pas a comprendre comment faire pour que l'orsque je clik pour la Deuxieme fois sur la chekbox cela arrette ma boucle pour !!!

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut
    bah avant de cliquer la premiere fois sur ta checkbox, elle est soit à true (cochée) soit à false (non cochée). Ici on va imaginé qu'elle est pas cochée, donc la prochaine fois que tu va cliquer dessus tu vas la decocher

    donc tu rajoute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if checkbox.checked = false Then
    tu arrete le timer
    j'suis vert !

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Private Sub Timer()
            Dim MaX As Integer
            Dim MaX1 As Integer
            MaX1 = lblclasse.Left
            Do
                lblclasse.Left = lblclasse.Left + 1
                If lblclasse.Left >= +270 Then
                    lblclasse.Left = MaX
                End If
     
                If Me.cbActiver.Checked = False Then
                    Me.tmrTimer1.Enabled = False
                End If
     
            Loop While Me.cbActiver.Checked = False
        End Sub
    ce qui ce traduit par : quand la chekbox et décocher (false) alors le timer prend la valeur false donc la boucle s'arrette .
    Mais sa plante mon formulaire , le label bouge bien en boucle , mais trop vite et apres plantage .

  4. #4
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut
    bah si il passe a false, c'est normal que ca boucle puisque dans ton while tu as mis la conditions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Loop While Me.cbActiver.Checked = False
    j'suis vert !

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    oui , pardon j'ai corriger sa de moi meme avan .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Sub Timer()
            Dim MaX As Integer
            Dim MaX1 As Integer
            MaX1 = lblclasse.Left
            Do
                lblclasse.Left = lblclasse.Left + 1
                If lblclasse.Left >= +270 Then
                    lblclasse.Left = MaX
                End If
                If Me.cbActiver.Checked = False Then
                    Me.tmrTimer1.Enabled = False
                End If
     
            Loop While Me.cbActiver.Checked = True
        End Sub
    Mais tjour pareil , je coche sa lance la fonction et apres je ne peut plus decocher la chekbox le label bouge bien , mais je ne peut rien faire et sa plante !

    peut etre que je doit configuer le timer ?

  6. #6
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut
    pour arreter un timer il faut utiliser tontimer.stop
    j'suis vert !

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    j'ai changer en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub cbActiver_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbActiver.CheckedChanged
            If Me.cbActiver.Checked = True Then
                Call Timer()
                Me.tmrTimer1.Start()
            End If
        End Sub
    et ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Sub Timer()
            Dim MaX As Integer
            Dim MaX1 As Integer
            MaX1 = lblclasse.Left
            Do
                lblclasse.Left = lblclasse.Left + 1
                If lblclasse.Left >= +270 Then
                    lblclasse.Left = MaX
                End If
                If Me.cbActiver.Checked = False Then
                    Me.tmrTimer1.Stop()
                End If
     
            Loop While Me.tmrTimer1.Enabled = True
        End Sub
    marche tjour pas , au 1er clik sur la chek , la boucle ce passe une seul foi ensuite sa tourne et bug !

  8. #8
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut
    bah je sias pas trop maet un point d'arret et regarde ou ca plante
    j'suis vert !

  9. #9
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    iol te faut un THREAD pou ke sa plante pas
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  10. #10
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    comment sa un thread ? je voi ce que c'est mais comment un crée un ?

  11. #11
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    bah sinon tu peux utiliser un DoEvents à la place d'un Thread. Tu peux procéder comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Private Sub Timer()
            Dim MaX As Integer
            Dim MaX1 As Integer
            MaX1 = lblclasse.Left
            Do
                'La ligne que j'ai ajouté
                Application.DoEvents()
                lblclasse.Left = lblclasse.Left + 1
                If lblclasse.Left >= +270 Then
                    lblclasse.Left = MaX
                End If
                If Me.cbActiver.Checked = False Then
                    Me.tmrTimer1.Stop()
                End If
     
            Loop While Me.tmrTimer1.Enabled = True
        End Sub
    j'ai testé le code et ça marche bien
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  12. #12
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    Merci JauB !!

    sauvé :d

  13. #13
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    je t'en prie.
    Bonne carrière 8)
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  14. #14
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    salut Amenos,

    Dis moi ton timer te sert à quoi finalement ?
    J'ai l'impression que tu l'utilise comme un simple booléen.
    Pourquoi ne te sert tu pas de l'évènement Tick ?

    Je serais toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
        Private Sub cbActiver_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbActiver.CheckedChanged
     
            tmrTimer1.Start() 
     
        End Sub
     
     
        Private Sub tmrTimer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrTimer1.Tick
     
            If Not cbActiver.Checked Then ' Si le label n'est pas coché
                tmrTimer1.Stop()
                Exit Sub
            End If
     
            ' Si on arrive ici c'est que le CheckBox est coché donc
            ' Tu fais ce que tu veux (bouger le label)
     
        End Sub
    Bien sur il faut soit que tu ais placé le timer manuellement sur ta form, soit que tu l'ai déclaré comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Withevents tmrTimer1 as Timer
    Pour que les évènements (Tick) du timer soient disponibles.


    ps : au fait UO ça te dirais pas qqc ? :

  15. #15
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    merci , NiamorH !

    sa marche , et j'avait bien définit le trmTimer1 avant .

    juste que sa defille pas trés vite , mais ca c'est juste un détail .


    ps: ui je scriptai sur UO après avoir joué . look tes MP !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] [#Develop] Label redimensionnable
    Par Emcy dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/01/2005, 13h55
  2. [Débutant][JSP]Récupération valeur de checkbox
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/09/2004, 09h16
  3. [VB.NET] DataGrid et CheckBox
    Par nmerydem dans le forum ASP.NET
    Réponses: 3
    Dernier message: 15/06/2004, 15h52
  4. [VB.NET] - Probleme Label avec Database
    Par codez dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/06/2004, 17h37
  5. [VB.NET] Datagrid - Récupérer CheckBox cochées
    Par nmerydem dans le forum ASP.NET
    Réponses: 16
    Dernier message: 18/05/2004, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo