Sélection de 4 boutons avec 2 couleurs différentes + la réponse après 3 secondes
Fermé
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
-
Modifié le 17 avril 2019 à 22:58
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 19 avril 2019 à 09:49
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 19 avril 2019 à 09:49
A voir également:
- Sélection de 4 boutons avec 2 couleurs différentes + la réponse après 3 secondes
- Réponse automatique outlook - Guide
- Picasa 3 - Télécharger - Albums photo
- 2 comptes whatsapp - Guide
- Word numéro de page 1/2 - Guide
- Combien de combinaison possible avec 3 chiffres ✓ - Forum Programmation
5 réponses
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
18 avril 2019 à 07:13
18 avril 2019 à 07:13
Bonjour
Peux tu détailler à quel moment (pour l’utilisateur) tu veut un délai?
Peux tu détailler à quel moment (pour l’utilisateur) tu veut un délai?
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
Modifié le 18 avril 2019 à 12:10
Modifié le 18 avril 2019 à 12:10
Thread.Sleep va figer ton logiciel car tu es dans le thread principal.
Cela pourrait être une solutuion si tu faisais du multithread.
Dans ton cas le timer est plus adapté.
Il faut que tu mettes tout le code à retarder dans le tick du timer.
Il faut aussi que ta variable B soit déclarée dans la classe et plus dans le bouton.
Dans le bouton tu demarres le timer et dans le timer tu l’arrêtes sinon il va répéter le code toutes les 3 secondes.
Cela pourrait être une solutuion si tu faisais du multithread.
Dans ton cas le timer est plus adapté.
Il faut que tu mettes tout le code à retarder dans le tick du timer.
Il faut aussi que ta variable B soit déclarée dans la classe et plus dans le bouton.
Dans le bouton tu demarres le timer et dans le timer tu l’arrêtes sinon il va répéter le code toutes les 3 secondes.
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
35
Modifié le 18 avril 2019 à 12:34
Modifié le 18 avril 2019 à 12:34
Oui justement, c'est la variable B qui me pose problème, comment la déclarer?
je souhaiterai le mettre sans bouton apparenté
je souhaiterai qu'il se fasse après cela
voici ce que j'ai fait:
je souhaiterai le mettre sans bouton apparenté
je souhaiterai qu'il se fasse après cela
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 End Sub
voici ce que j'ai fait:
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
18 avril 2019 à 16:28
18 avril 2019 à 16:28
Voila comment déclarer B.
Et c’est dans le bouton qu’il faut démarrer le timer.
Pour du code, merci de ne pas mettre de capture, les balises sont là pour ça
Dim B As Button Private Sub BResponse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BResponseA.Click, BResponseB.Click, BResponseC.Click, BResponseD.Click B = CType(sender, Button)
Et c’est dans le bouton qu’il faut démarrer le timer.
Pour du code, merci de ne pas mettre de capture, les balises sont là pour ça
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
35
18 avril 2019 à 17:23
18 avril 2019 à 17:23
Bon jour,
Merci pour ce tuyau,
Et concernant les capture c'était pour vous montré les erreur qui sont en rouge et qu'on ne vous pas forcément si je les met sous forme de balise écrite.
cependant j'ai une problème pour affecter une commande à partir du timer voici mon erreur:
Merci beaucoup cordialement.
Merci pour ce tuyau,
Et concernant les capture c'était pour vous montré les erreur qui sont en rouge et qu'on ne vous pas forcément si je les met sous forme de balise écrite.
cependant j'ai une problème pour affecter une commande à partir du timer voici mon erreur:
Merci beaucoup cordialement.
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
Modifié le 18 avril 2019 à 18:40
Modifié le 18 avril 2019 à 18:40
Sauf que je ne les ai pas vues tes erreurs sur ta capture précédente parce que j'étais sur un téléphone.
Et là que j'en vois une je ne peux pas copier coller pour t'expliquer.
Et là que j'en vois une je ne peux pas copier coller pour t'expliquer.
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
35
18 avril 2019 à 18:50
18 avril 2019 à 18:50
Désolé, je ne savais pas que vous êtiez sur téléphone.
Voici le code:
Voici le code:
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() Timer1.Interval = 2000 End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick If Timer1.Interval = 2000 Then AfficheReponseQuestion() End If End Sub Dim C As Button Private Sub AfficheReponseQuestion(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BResponseA.Click, BResponseB.Click, BResponseC.Click, BResponseD.Click C = 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 C.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK1 Or C.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK2 Then C.BackColor = Color.Green Else C.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 C.Text Case "A", "B" If C.Text = TableauDesQuestions(IndiceQuestionActuelle).RepOK1 Then TableauDesQuestions(IndiceQuestionActuelle).RepOK1 = "OK" End If Case "C", "D" If C.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
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
18 avril 2019 à 18:57
18 avril 2019 à 18:57
Alors cette méthode
et là
tu ne luis fournis pas. En passant, je pense que le if ne sert à rien.
Avant d'aller plus loin, pourquoi avoir abonner 2 méthodes au click de tes boutons?
Ce que ça fait faire c'est:
Private Sub AfficheReponseQuestion(ByVal sender As System.Object, ByVal e As System.EventArgs)demande en paramètre un object et un System.EventArgs
et là
If Timer1.Interval = 2000 Then AfficheReponseQuestion() End If
tu ne luis fournis pas. En passant, je pense que le if ne sert à rien.
Avant d'aller plus loin, pourquoi avoir abonner 2 méthodes au click de tes boutons?
Ce que ça fait faire c'est:
- appeler simultanément BResponse_Click et AfficheReponseQuestion
- au bout de 2 secondes appeler une 2eme fois AfficheReponseQuestion
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
35
Modifié le 18 avril 2019 à 20:08
Modifié le 18 avril 2019 à 20:08
oui j'avais pensez aussi de le faire mais je ne trouve pas le moyen de le faire.
Le premier met les couleur de section en vert:
et le deuxième met les couleur pour signaler la bonne réponse ou pas.
après au bout de 2 secondes je n'arrive pas à trouver un lien qui les relie sur si je met dans le même bouton.
Le premier met les couleur de section en vert:
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 End Sub
et le deuxième met les couleur pour signaler la bonne réponse ou pas.
Timer1.Start() Timer1.Interval = 2000 '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()
après au bout de 2 secondes je n'arrive pas à trouver un lien qui les relie sur si je met dans le même bouton.
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
18 avril 2019 à 19:41
18 avril 2019 à 19:41
Sauf que là en abonnant les 2 méthodes au click des boutons elles vont s’exécuter « en même temps » ça va se jouer à quelques millisecondes et le résultat sera incertain.
Donc je te répète ma question pourquoi tu as fait ça? Dans un but précis ou au petit bonheur la chance?
Donc je te répète ma question pourquoi tu as fait ça? Dans un but précis ou au petit bonheur la chance?
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
35
18 avril 2019 à 20:06
18 avril 2019 à 20:06
Différencier les actions était pour moi la méthode la plus simple qu'associer les codes dans le même boutons (même fonction).
voici le code entier:
Par contre il va directement à ce code là.
sans passer par ce code là.
c'est pour cela que je voulais placer un Timer de 2 sec pour bien différencier les action (test).
voici le code entier:
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() Timer1.Interval = 2000 '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
Par contre il va directement à ce code là.
'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
sans passer par ce code là.
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
c'est pour cela que je voulais placer un Timer de 2 sec pour bien différencier les action (test).
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
Modifié le 18 avril 2019 à 20:20
Modifié le 18 avril 2019 à 20:20
Par contre il va directement à ce code là.
...
sans passer par ce code là.
Alors je répète, encore une fois, ces 2 codes sont exécutés quasiment simultanément parce que tu les as abonnés tous les 2 au même événement. Et donc le résultat final dépend de qui est exécuté en premier et qui écrase le résultat précédent puisque exécuter quelques millisecondes après.
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
35
Modifié le 18 avril 2019 à 20:49
Modifié le 18 avril 2019 à 20:49
donc je dois le mettre dans deux éventements différent? et mettre le timer dans ma première événement ?
et que je dois mettre cette commande là dans le deuxième événement:
et que je dois mettre cette commande là dans le deuxième événement:
Dim B As Button Private Sub AfficheReponseQuestion(ByVal sender As System.Object, ByVal e As System.EventArgs) B = CType(sender, Button)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
18 avril 2019 à 23:41
18 avril 2019 à 23:41
En gros on en est là parce que
Je te propose donc deux choses et je m’arreterai ici:
- tu poses une question sur un forum, au message 3 après un petit éclaircissement je te propose une solution et toi, pour une raison qui m’échappe, tu fais totalement autre chose.
- les 12 messages qui suivent sont un dialogue de sourd entee moi qui te demande pourquoi tu n’as pas essayé ce que je t’ai proposé et t’explique que ce tu as écrit n’est pas cohérent et toi qui démontre que tu n’as pas tout compris aux bases de vb.
Je te propose donc deux choses et je m’arreterai ici:
- relis le message 3, et essaye
- laisse ton projet de côté quelques jours, le temps d’apprendre les bases de vb, par exemple avec le coirs de plassere https://plasserre.developpez.com/cours/vb-net/ il ne fera pas de toi une codeuse hors pair, ça il n’y a que le temps et la persévérance qui t’y mèneront, mais il comblera quelques trous dans tes fondations
yannel777
Messages postés
129
Date d'inscription
lundi 4 mai 2009
Statut
Membre
Dernière intervention
24 janvier 2023
35
19 avril 2019 à 02:33
19 avril 2019 à 02:33
Oui, vous avez raison, je vais suive vos conseil :) en apprenant d'avantage :)
désolé d'avoir fait perdre votre temps.
cordialement.
désolé d'avoir fait perdre votre temps.
cordialement.
Whismeril
Messages postés
19028
Date d'inscription
mardi 11 mars 2003
Statut
Non membre
Dernière intervention
24 avril 2024
931
19 avril 2019 à 09:49
19 avril 2019 à 09:49
C’est toi qui perd du temps, ce n’est pas sur un forum qu’on va t’expliquer de a à z le fonctionnement des événements.
Il y a des cours pour ça.
Il y a des cours pour ça.
Modifié le 18 avril 2019 à 11:44
voici ce que je souhaitai avoir:
ou la deux deuxième solution
cela dépendra quel est le mieux.
On m'a parler de "la méthode sleep" aussi qu'on peut utiliser mais cependant je ne l'a connais pas.
si vous avez aussi un exemple à me proposer en rapport avec mon programme afin que je comprenne mieux.
Merci de votre compréhension.