none
Sélection de 4 boutons avec 2 couleurs différentes plus la réponse après 3 secondes RRS feed

  • Question

  • Bonjour,

    Je fais un programme avec actuellement 2 question qui amène à 4 propositions dont deux sont valides.

    Voici  la fonction pour les 4  boutons en même temps.

    Private Sub BResponse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BResponseA.Click, BResponseB.Click, BResponseC.Click, BResponseD.Click
            Dim B As Button = CType(sender, Button)

    cette commande permet  de mettre les toutes les réponses en vert avec un  clique  puis  avec  un  second  clique des même boutons les remettre à la couleur par défaut.

     If B.ForeColor = Color.White And B.BackColor = Color.Green Then
                B.ForeColor = Color.Black
                B.BackColor = Color.Transparent
            Else
                B.ForeColor = Color.White
                B.BackColor = Color.Green
            End If

     et  concernant  la réponse,  j'aimerai  bien le mettre après un Timer de 3 seconde.

    voici  la commande concernant la réponse.

    'IndiceQuestionActuelle est uune variable globale qui permet à toute portion de code de savoir de quelle question on s'occupe à cet instant.
            ' Dans cette procédure (BResponse_Click), il s'agit de vérifier le bon choix du bouton (A, B, C et D) fait par l'utilisateur pour la question actuellemebt posée.
            ' Bref, il s'agit de savoir s'il a bien répondu à cette paire de questions et d'agir en conséquence (ici, ça se résume à changer la couleur des boutons).
    
            ' Marquage à l'écran des bonnes réponses faites. Si le bouton cliqué est celui de la bonne réponse, il devient Yellow, sinon il devient Gray
            ' Les boutons qui ne sont pas cliqués restent dans le couleur d'affichage de départ.
            If B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK1 Or
                B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK2 Then
                B.BackColor = Color.Green
            Else
                B.BackColor = Color.Red
            End If
    
            ' Marquage dans le tableau des questions des bonnes réponses faites : la réponse (A ou B, et C ou D) est remplacée par OK si la réponse a été correcte
            ' Il est alors possible de relire le tableau (à faire ... ) en agissant selon que le RepOK1 vaut "OK" ou non, pour la question primaire
            ' et selon que le RepOK2 vaut "OK" ou non, pour la question secondaire
            Select Case B.Text
                Case "A", "B"
                    If B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK1 Then
                        TableauDesQuestions(IndiceQuestionActuelle).RepOK1 = "OK"
                    End If
                Case "C", "D"
                    If B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK2 Then
                        TableauDesQuestions(IndiceQuestionActuelle).RepOK2 = "OK"
                    End If
            End Select

    cela est  possible ou pas ?  

    (PS: Les lignes de commande sont vérifiées et bonnes, il  manque juste à mettre  un Timer de 3 secondes entre les deux).

    Merci de votre compréhension.

    mercredi 17 avril 2019 10:30

Toutes les réponses

  • Bonjour,

    Vous pouvez aussi utiliser la méthode Sleep avant d'afficher la réponse:

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 18 avril 2019 08:34
    Modérateur
  • Bonjour, 

     je connais pas  cette  méthode là. 

    auriez vous un  exemple (par rapport à mon programme)  que  vous  pourriez  me proposer afin que  je comprenne mieux?

    Merci de votre compréhension.

    jeudi 18 avril 2019 09:47
  • Finalement  je  me suis avancer  sur  le code,  j'ai  mis un timer mais pas de méthode sleep. 

    Je n'arrive pas à affecter ma commande après mon timer.

    voici  mon code:

    <code basic>Private Sub BResponse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BResponseA.Click, BResponseB.Click, BResponseC.Click, BResponseD.Click
            Dim B As Button = CType(sender, Button)
            If B.ForeColor = Color.White And B.BackColor = Color.Green Then
                B.ForeColor = Color.Black
                B.BackColor = Color.Transparent
            Else
                B.ForeColor = Color.White
                B.BackColor = Color.Green
            End If
            Timer1.Start()

        End Sub
        Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            Timer1.Interval = 2000
            AfficheReponseQuestion()
        End Sub
        Dim B As Button
        Private Sub AfficheReponseQuestion(ByVal sender As System.Object, ByVal e As System.EventArgs)
            B = CType(sender, Button)

            'IndiceQuestionActuelle est uune variable globale qui permet à toute portion de code de savoir de quelle question on s'occupe à cet instant.
            ' Dans cette procédure (BResponse_Click), il s'agit de vérifier le bon choix du bouton (A, B, C et D) fait par l'utilisateur pour la question actuellemebt posée.
            ' Bref, il s'agit de savoir s'il a bien répondu à cette paire de questions et d'agir en conséquence (ici, ça se résume à changer la couleur des boutons).
            ' Marquage à l'écran des bonnes réponses faites. Si le bouton cliqué est celui de la bonne réponse, il devient Yellow, sinon il devient Gray
            ' Les boutons qui ne sont pas cliqués restent dans le couleur d'affichage de départ.
            If B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK1 Or
                B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK2 Then
                B.BackColor = Color.Green
            Else
                B.BackColor = Color.Red

            End If
            ' Marquage dans le tableau des questions des bonnes réponses faites : la réponse (A ou B, et C ou D) est remplacée par OK si la réponse a été correcte
            ' Il est alors possible de relire le tableau (à faire ... ) en agissant selon que le RepOK1 vaut "OK" ou non, pour la question primaire
            ' et selon que le RepOK2 vaut "OK" ou non, pour la question secondaire
            Select Case B.Text
                Case "A", "B"
                    If B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK1 Then
                        TableauDesQuestions(IndiceQuestionActuelle).RepOK1 = "OK"
                    End If
                Case "C", "D"
                    If B.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK2 Then
                        TableauDesQuestions(IndiceQuestionActuelle).RepOK2 = "OK"
                    End If
            End Select

            ' '' Il y a les Label des questions et des réponses : ils peuvent aussi être coloriés ...
            'LQuestion1.BackColor ...   et ForeColor aussi ...
            'LResponseA.BackColor ...
            'LResponseB.BackColor ...
            'LQuestion2.BackColor ...
            'LResponseC.BackColor ...
            'LResponseD.BackColor ..
            Timer1.Stop()
        End Sub</code>

    et en gros, j'obtiens soit cette erreur là:




    ou cette erreur là.



    Auriez vous une solution ?

    cordialement


    • Modifié Yannel777 jeudi 18 avril 2019 19:23
    jeudi 18 avril 2019 15:28
  • Avez vous trouvé la réponse à votre problème ? Je serais curieux de connaître la solution !
    mardi 29 octobre 2019 13:01