Cocher par le code une checkbox dans un panel

Résolu
Signaler
Messages postés
20
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
5 juin 2008
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
salut tout le monde

dans la continuité de ce message là : http://www.vbfrance.com/infomsg_RECONNAITRE-CONTROLE-DANS-PANEL-VB-EXPRESS_1106785.aspx

j'avais un 2e soucis, j'explique :

dans ce panel, j'ai 5 textbox + 1checkbox par ligne sur 10 lignes

le principe : quand je clique sur une checkbox, son tag prend "coché" et les 5 textbox sont accessibles en écriture
quand la personne a rempli les lignes ( soit 1, 2 ou ... 10), elle clique sur un bouton et une boucle se met en route

pour i de 0 à 9
si le tag de la case à cocher est "coché", le contenu des textbox est enregistré dans une table
fin pour

jusque là po de problème, tout roule

mais, j'ai un piti soucis concernant la restitution des données

j'arrive par une boucle à faire le chemin inverse, c'est à dire à restituer les enregistrements dans chaque case, et à placer le tag "coché" sur la textbox correspondant mais ----> je n'arrive pas à cocher la case par le code

alors j'ai retenté ça mais je n'arrive pas à finir

For Each c As System.Windows.Forms.Control In PanelRCvillaamodifier.Controls 'pour chaque controle du panel
            If c.GetType() Is GetType(System.Windows.Forms.CheckBox) Then  'si ce controle est une checkbox

                        si le tag de cette checkbox = "coché",

                                    alors patatipatata.checked = true
                        fin si

            End If
Next

voilà, si quelqu'un voit la chose......

merci d'avance

9 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Effectivement mon code ne fopnctionne QUE si il n'y a QUE des checkBox.... Vive .NET

Et bien essaie ceci alors.

Dim TmpCx As CheckBox

For Each Cx As Control In PanelRCvillaamodifier.Controls
   If Cx.GetType Is GetType(CheckBox) Then
       TmpCx = CType(Cx, CheckBox)       If TmpCx.Tag "COCHE" Then TmpCx.Checked True
   End If
Next
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,Et ceci: If NomCheckBox.Tag "coche" then NomCheckBox.Value vbChecked

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
20
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
5 juin 2008
1
    Merci de ta réponse jrivet

à vrai dire, bien entendu, j'y ai pensé

        If CheckBox39.Tag = "coché" Then

            CheckBox39.Checked = True

        End If

et ça roule

mais faut le faire 10 fois de suite pour les 10 checkbox du panel

aussi, j'aurai bien voulu (apprendre et) savoir comment faire ces 10 tests en 1 formule

sinon, y'a po de soucis, j'serai sauvé par les 10 test   ^^

merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
re,
Mais si tu mets ce test dans la boucle ca ne te fait qu'un seul test.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
20
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
5 juin 2008
1
       yep merci
mais quand tu dis, If NomCheckBox.Tag "coche" then NomCheckBox.Value vbChecked

j'suis d'accord mais le "Nomcheckbox" n'est pas connu.(enfin n'est pas récupérable à mon niveau)

je sais que la 1ere c'est checkbox40 par exemple, la 2e checkbox39, etc

l'idéal serait :

je teste chaque élément du panel
si c'est une checkbox -----> je récupère son nom
j'analyse son tag
si ce tag = coché ------> je fais cocher par le code cette checkbox à l'aide de son nom récupéré plus haut

merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Simplifie toi la vie.
Plutot que de faire pour chaque elements, fait pour chaque CheckBox, tu n'auras déjà pas à vérifier le Type.

Regarde ceci cela devrait résoudre ton problème

'POur chaque CheckBox Du Panel
For Each Cx As CheckBox In PanelRCvillaamodifier.Controls   If cx.Tag "COCHE" Then cx.Checked True
Next
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
20
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
5 juin 2008
1
    Bien vu mais j'avais deja bidouillé un truc dans le genre mais j'ai cette erreur avec ton code :

"Impossible d'effectuer un cast d'un objet de type 'System.Windows.Forms.TextBox' en type 'System.Windows.Forms.CheckBox'."

et ouais, l'embetant c'est que le panel est "multi-windows-forms"......
Messages postés
20
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
5 juin 2008
1
    Merci bien mon ami, ça roule, (enfin ça devrait, j'dois encore régler la gestion de l'evenementiel)

bonne journée, bonne continuation et à la revoyure
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
pas de quoi. Bonne Prog

@+: Ju£i?n
Pensez: Réponse acceptée