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éclencher une action avec un timer


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 123
    Points
    123
    Par défaut déclencher une action avec un timer
    Bonjour,

    j'utilise un timer qui tick toutes les 30 secondes au chargement de mon load.

    Dans le load de ma form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Timer1.Interval = 5000
    Timer1.Start()
    Dans mon événement tick

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim i As Integer
            i = ListBoxDatedemande.Items.Count
            Dim j As Integer = 0
            Do While ListBoxDatedemande.Items.IndexOf(j) <= i
                If ListBoxDatedemande.Items.Item(j) = DateAndTime.Now.Date Then
                    MsgBox("OK")
                    j = j + 1
                Else : MsgBox("KO")
                    j = j + 1
                End If
                Timer1.Stop()
            Loop
            Timer1.Stop()
    Mon problème: dans la première ligne de mon while, mon j = 3 et mon i = 3 jusque la tout va bien, mais il me fait une erreur avec j = 4 et i = 3 ... normalement il ne devrait pas rentrer dans la boucle vu que la condition n'est pas rempli... ou si mon code est totalement érroné ...
    Si quelqu'un a une idée et une solution, je suis toute ouïe ^^

    Merci.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ce forum a une balise code pour la mise en forme car c'est illisible
    de plus au lieu de dire "j'ai un erreur" on précise quelle est l'erreur (bien qu'on puisse miser sur un OutOfRange)
    et à mon avis y a moyen de réduire le nombre de ligne de code, mais pour ca il faut que tu précises ce que tu veux faire
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 123
    Points
    123
    Par défaut
    le problème vient, il me semble, du fait que ton "Do - while" teste la condition en fin de boucle... il faudrait donc remplacer ton "<=" par "<" tout simplement!
    à tester et confirmer...

    et + 1 pour le message précédent, les balises code seraient les bienvenues pour plus de lisibilité...

    "- Mais à quoi ça sert IE ?
    - à télécharger Firefox ! "

  4. #4
    Membre averti
    Avatar de Ogotcha
    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Points : 398
    Points
    398
    Par défaut
    Si je comprend ce que tu souhaites (bien que les balise code serait un plus), c'est bouclé sur tes items de ta listbox et tester si la valeur de ton item est égal à la date du jour ?

    Pourquoi ne pas faire une boucle For ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i as integer = 0 to ListBoxDatedemande.Items.Count
    If ListBoxDatedemande.Items(i) = DateAndTime.Now.Date Then
    MsgBox("OK")
    End If
    Next
    Mon Blog
    FAQs DotNet
    Fonction utile : Recherche

  5. #5
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 123
    Points
    123
    Par défaut
    Merci de vos réponses, et désole pour les balises

    Mon erreur est la suivante :

    L'exception ArgumentoutofrangeException n'a pas été géré
    (donc tu as raison Pol63)

    InvalidArgument=La valeur '3' n'est pas valide pour 'index'. Nom du paramètre : index
    j'ai le même message d'erreur avec une boucle For to.

    Ce que je veux faire, c'est vérifier une listbox de date (ListBoxDatedemande) par rapport à la datesystem (DateAndTime.Now.Date), et si cela correspond alors j'affiche OK sinon j'affiche KO. Je simplifie mon code car à la base j'envoi un e-mail + alerte... Je fait cette vérife à partir d'un timer avec un interval de 30s (30000 millisecondes) qui lance cette vérification toutes les 30 secondes.

    Si besoin de plus d'explication, n'hésitait pas !!!

  6. #6
    Membre averti
    Avatar de Ogotcha
    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Points : 398
    Points
    398
    Par défaut
    Fait un -1 sur ListBoxDatedemande.Items.Count car ListBoxDatedemande.Items est de base 0

    Donc au niveau de la boucle for cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i as integer = 0 to ListBoxDatedemande.Items.Count - 1
    'Le reste du code
    Next
    Mon Blog
    FAQs DotNet
    Fonction utile : Recherche

  7. #7
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 123
    Points
    123
    Par défaut
    Merci beaucoup OGOTCHA ^^


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

Discussions similaires

  1. Déclencher une action avec un CalendarExtender
    Par zooffy dans le forum ASP.NET
    Réponses: 11
    Dernier message: 05/10/2012, 05h36
  2. Réponses: 7
    Dernier message: 22/07/2010, 11h32
  3. repeter une action avec un timer
    Par blondelle dans le forum C++Builder
    Réponses: 30
    Dernier message: 24/10/2008, 01h25
  4. Déclencher une action avec un chrono
    Par Oberown dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 14h22
  5. [JTextField] Déclencher une action avec la touche ENTER
    Par tchoukapi dans le forum Composants
    Réponses: 10
    Dernier message: 19/09/2005, 14h37

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