Problème de checkBox multiple :S

Sunnydelight Messages postés 8 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 26 janvier 2013 - 24 janv. 2013 à 14:25
Sunnydelight Messages postés 8 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 26 janvier 2013 - 26 janv. 2013 à 17:29
Bonjour,

Je suis actuellement en train de réaliser un programme de poker Holdem, j'en suis pour le moment dans la phase de debut mais je bloque face à un problème et je ne vois vraiment pas d'ou provient mon erreur :(

Pour faire bref dans ce debut de programme, On demande à l'utilisateur de rentrer les cartes qu'il dispose en main (deux cartes). Pour ce faire pour la première carte, j'ai placé deux GroupBox composés de plusieurs checkbox, un Groupbox contenant les 13 cartes de jeux et un second GroupBox contenant 4 checkbox afin d'associer la couleur à la carte choisi.

Je souhaite ensuite si par exemple un utilisateur rentre sa carte ainsi que sa couleur que la carte s'affiche en tant qu'image. J'utilise donc une PictureBox.

Voici le code saisi dans la CheckBox 1 qui correspond à l'affichage de :
- l'As de carreau (Checkbox1 coché et Checkbox14 coché),
- l'As de trèfle (CheckBox1 coché et Checkbox15)
- l'As de coeur (Checkbox1 et Checkbox16)
- l'As de pique(Checkbox1 coché et Checkbox17 coché)

Le programme permet de faire apparaître la carte de jeux si la condition que la case As et la case couleur aient été coché. Ou bien de faire disparaitre l'image présente dans la pictureBox si une des cases n'est pas cochée.

Private Sub CheckBox1_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

If CheckBox1.Checked = False Then
PictureBox1.Hide()
ElseIf CheckBox1.Checked And CheckBox14.Checked Then
PictureBox1.Image = Image.FromFile("C:\User\diamonds_A_svg.png")
PictureBox1.Show()
ElseIf CheckBox1.Checked And CheckBox15.Checked Then
PictureBox1.Image = Image.FromFile("C:\Users\clubs_A_svg.png")
PictureBox1.Show()
ElseIf CheckBox1.Checked And CheckBox16.Checked Then
PictureBox1.Image = Image.FromFile("C:\Users\hearts_A_svg.png")
PictureBox1.Show()
ElseIf CheckBox1.Checked And CheckBox17.Checked Then
PictureBox1.Image = Image.FromFile("C:\Users\spades_A.svg.png")
PictureBox1.Show()
End If

End Sub


Et code présent sur la Checkbox14 (Couleur carreau) :

Private Sub CheckBox14_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox14.CheckedChanged

If CheckBox1.Checked And CheckBox14.Checked Then
PictureBox1.Image = Image.FromFile("C:\Users\diamond_A_svg.png")
PictureBox1.Show()
ElseIf CheckBox14.Checked = False Then
PictureBox1.Hide()
End If

End Sub

Je ne replace pas le code pour les 3 autres couleurs puisque le code est identique.

RESULTAT : Le programme fonctionne à merveille :) quand je selectionne les deux checkbox correspondante, j'affiche ma carte (pour le moment que les AS) et si une des deux checkbox est décochée alors l'image disparait.

Mon problème est tel que dés que j'ajoute par exemple dans la Checkbox14 une nouvelle condition (à la suite de celle donné) pour par exemple affiché le 2 de Carreau. Rien ne s'affiche même plus la partie fonctionnelle donné pour affiché un AS de couleur X.

Je comprends vraiment pas la structure est identique à celle qui fonctionne et de plus ce que je rajoute me fait tout planter ....

Merci de votre aide d'avance :)

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 janv. 2013 à 15:09
Bonjour,
Cela me parait plus un problème de conception qu'un problème de développement.
Même en gardant ton principe de 2 checkboxes par carte à "déclarer" (je ne ferais pas ainsi, mais c'est là ton choix) :
- je ne permettrais pas de déclarer deux cartes d'un coup, mais une par une
- entre les deux déclarations, je garderais l'image de la première et recommencerais tout à zéro pour la déclaration de la seconde
- je mettrais bien sûr en place un mécanisme pour décider du numéro de la déclaration. Ce N° serait gardé en mémoire.

Je me demande d'ailleurs si je ne choisirais pas simplement de subordonner le choix de la seconde carte au fait que l'image de la première est déjà affichée.
Et si affichée : de remettre mes checkboxes à blanc
Bien sûr, je ne ferais pas déclencher lors des évènement Change de mpes textboxes, mais au click d'un bouton de validation de mes "cochages".

En tout état de cause : conception et non développement.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Sunnydelight Messages postés 8 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 26 janvier 2013
24 janv. 2013 à 15:32
Merci pour ta réponse,

Je comprends en globalité ce que tu veux dire dans la façon de faire et je vais retravailler mon programme avec un bouton click de validation plutôt qu'une réaction sur les deux checkBox à la fois.

Par contre je n'ai pas tout compris dans ton message quand tu m'a parlé de "déclarer deux carte d'un coup mais une par une et que tu ne le ferai pas" tu parlais de deux condition Couleur et Nombre de la carte ou bien vraiment de deux carte? Car si je l'ai fait de déclarer deux carte en une fois peux tu m'expliquer, comment je l'ai fait ou bien Ou je l'ai fait. Car je n'ai pas fait gaffe à cela?

Je te demande pourquoi car Pour moi dans mon message je parle de l'affichage que d'une seul carte pour le moment. C'est pour cela peut être que je ne comprends pas :)

Merci pour tes conseils je reposterai demain pour te dire ce qu'il en ai :), j'attends juste ta réponse sur la partie que je n'ai pas compris afin de le prendre en consideration dans mon evolution ;)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 janv. 2013 à 16:57
Je voulais dire ceci :
Pour chaque carte (déclaration) :
- y choisir la hauteur et la couleur (donc cocher 2 checkboxes)
- valider, contrôler et affecter une image à cette déclaration
- remettre les chexkboxes à blanc
- faire de même pour la 2ème déclaration

tu pourrais d'ailleurs remplacer avantageusement des deux séries de checkboxes par deux listboxes. Et dans ce cas : à la validation ===>> affecter une image sur les sélections faites (avec refus de si deux sélections non faites) et remettre à blanc les sélections.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Sunnydelight Messages postés 8 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 26 janvier 2013
26 janv. 2013 à 17:29
Bonjour,

Alors comme convenu me revoilà :) . J'ai tout recommencer et ai conserver quelques un de tes conseils et maintenant tout fonctionne :).

J'ai ajouté un bouton click et ai effectué tous mes contrôles à partir de ce bouton et depuis plus aucun problème. Je compte également remettre toutes mes Checkbox à blanc une fois la carte validée, oui c'est une bonne idée pour éviter certain ennui par rapport à d'autres choix de l'utilisateur...

Maintenant je suis en train de mettre en place un compteur me permettant de connaître le nombre de Chekbox selectionnées afin de transmettre un message d'erreur si plus de deux carte choisi, je vais me lancer :)

Pour le problème rencontré auparavant je me demande si il n'y avait pas également un problème de propriété de mes checkbox car mon code comme je te disais fonctionnais avec quelques carte et quand j'ajoutais d'autre combinaison rien ne s'affichait, j'ai donc supprimé toutes mes checkbox voyant qu'elle ne réagissait pas. Et ai recommencé avec les propriété de bases. Et cela à fonctionné.

J'en conclu que comme tu disais ma conception n'était pas au top, mais je pense à ce problème dans les propriétés Checkbox également, mais je ne sais pas lesquelles :S

Merci de ton aide
0
Rejoignez-nous