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

C# Discussion :

Thread.sleep() - Picturebox change


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Par défaut Thread.sleep() - Picturebox change
    Bonsoir,

    après le clique de mon boutton, j'aimerais que ma picturebox change d'image avant d'executer l'action suivant à savoir Charger une question.

    J'ai essayé d'inclure: Thread.sleep(200); dans mon code pour que le programme bloque le thread pendant 200 ms avant de passer à la suite mais rien ne se passe je ne vois pas ou est l'erreur.

    voici un bout du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                if (QuestionCourante >= LeQuizz.Count())
                {
                    CheckReponse(LeQuizz[QuestionCourante-1].BonneRéponse);
                    MessageBox.Show("Vous avez terminer. Voici votre score: " + Score.ToString());
                }
                else
                {
     
                    CheckReponse(LeQuizz[QuestionCourante].BonneRéponse);
                    Thread.Sleep(500);
                    ChargerQuestion();  
                }
    Merci de m'aider

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Par défaut
    Pour que vous compreniez, voici le code de ma fonction CheckReponse:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public void CheckReponse(string bonnereponse) // Fonction servant à vérifier la réponse des utilisateurs
            {
                const string PICJUSTE = @"c:\Quizz\Image\Juste.gif"; // chemin de l'image correcte
                const string PICFAUX = @"c:\Quizz\Image\Faux.gif"; // chemin de l'image fausse
                int Ref = 0; // Quel optR a été séléctionné
     
                pctI1.Image = null;
                pctI2.Image = null;
                pctI3.Image = null;
     
                // Test affectant la variable de référence
                if (optR1.Checked) Ref = 1;
                if (optR2.Checked) Ref = 2;
                if (optR3.Checked) Ref = 3;
     
                try
                {
                    Thread.Sleep(250);
                    switch (Ref) // regarde l'élément séléctionné verifie si il est juste et ajoute l'image et incrémente le score.
                    {
                        case 0: // si rien n'est séléctionné
                            MessageBox.Show("Vous devez sélectionnée une réponse");
                            QuestionCourante--; // on décrémente la question courante étant donnée qu'elle a fait un saut lors du clique
                            break;
                        case 1: // si optR1 a été séléctionné
                            if (optR1.Text == LeQuizz[QuestionCourante - 1].BonneRéponse) // si la réponse est correct
                            {
                                pctI1.Image = new Bitmap(PICJUSTE);
                                Score++;
                            }
                            else
                            { // si la réponse est incorrecte
                                pctI1.Image = new Bitmap(PICFAUX);
                            }
                            break;
                        case 2: // si optR2 a été sélectionné
                            if (optR2.Text == LeQuizz[QuestionCourante - 1].BonneRéponse)
                            {
                                pctI2.Image = new Bitmap(PICJUSTE);
                                Score++;
                            }
                            else
                            {
                                pctI2.Image = new Bitmap(PICFAUX);
                            }
                            break;
                        case 3: // si optR3 a été séléctionné
                            if (optR3.Text == LeQuizz[QuestionCourante - 1].BonneRéponse) // si la réponse est correcte
                            {
                                pctI3.Image = new Bitmap(PICJUSTE);
                                Score++;
                            }
                            else // si la réponse est fausse
                            {
                                pctI3.Image = new Bitmap(PICFAUX);
                            }
                            break;
                    }
                }
                catch (Exception ex) { MessageBox.Show("L'erreur suivante est apparue: " + ex.ToString()); }
            }

  3. #3
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Qu'est ce que tu entends par 'rien ne se passe ?'. 200ms c'est rapide, tu ne vois peut-être pas la pause. N'oublie pas qu'un sleep dans le thread principal freeze le GUI de l'appli, c'est pas top.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Par défaut timer
    Au lieu de jouer sur le thread, utilise un timer.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Par défaut
    Salut GuruuMeditation,

    Tout d'abord merci pour vos questions. Ce forum m'aide énormément.

    mon application est un quizz posant plusieurs questions à la suite.
    ma fonction CheckReponse() doit ajouter une image à coté de ma forme.

    Je fais appelle à celle-ci lors de l'événement click sur mon boutton.

    J'ai essayé de mettre un thread.sleep() juste après l'appelle de ma fonction pour que je puisse voir l'image avant de passer à la question suivant.

    J'ai également augmenté le thread à 500 mais l'image n'apparait qu'après la question suivante.

    Merci encore.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 60
    Par défaut
    Carrément pour ce que tu souhaites faire c'est un timer qu'il te faut
    avec une interval du temps d'attente désiré,

Discussions similaires

  1. JButton avec boucle while contenant thread.sleep(1000)
    Par v4np13 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/10/2007, 20h31
  2. Timers, boucles d'affichage et Thread.sleep
    Par Silk_do_Nadear dans le forum Développement 2D, 3D et Jeux
    Réponses: 10
    Dernier message: 28/07/2007, 01h49
  3. [Prbl] Thread(image ne s'affichant pas avant le thread.sleep
    Par stephane92400 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 26/06/2006, 11h57
  4. [Thread] PB Thread.sleep(1000) marche pas
    Par kliel dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 03/12/2004, 13h47
  5. [Thread]sleep()
    Par jokoss dans le forum Concurrence et multi-thread
    Réponses: 15
    Dernier message: 03/07/2004, 14h33

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