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

Windows Forms Discussion :

[C#] Création dynamique de checkbox


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut [C#] Création dynamique de checkbox
    Bonjour j'aimerai pouvoir créer dynamiquement 100 checkbox grâce à une boucle, et pouvoir interagir avec ceux-ci (leur assigner un text, savoir s'il sont checké ou non et ce toujours avec des boucles). Je n'ai pas encore trouvé comment faire en c#. Quelqu'un aurait-il une idée ?

    Merci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CheckBox ck;
     
    for (int i = 1; i <= 100; i++)
    {
        ck = new CheckBox();
        this.Controls.Add(ck);
    }

    Pa stesté et c'est vraiment fait de tête....

  3. #3
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    Rajoutes dans la boucle ck.Name = "CheckBox" + i

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    C'était le nom qui me bloquer dans la boucle, la solution est si simple en plus...Pour agir avec j'aurai qu'a tester les égalités de nom...merci et dsl du dérangement.

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut Acces
    Ca marche impeccable, par contre si je sais que je veux acceder à la 75 checkbox comment m y prendre ?

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach ( CheckBox ck in this.Controls )
    {
         if ( ck.Name = "CheckBox 75" )
         {
             // C'est la CheckBox75
         }
    }
    A+

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    il me dit que le cast spécifié n'est pas valide...et me montre la ligne du foreach...plsu précisément le CheckBox ck... Je continu a chercher...

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Oula, autant pour moi, il manque une ligne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    foreach ( Control ck in this.Controls ) 
    {
         if (  ck.GetType() == Type.getType("System.Windows.Forms.CheckBox") )
         {
              if ( ck.Name = "CheckBox 75" ) 
              { 
                  // C'est la CheckBox75 
              }
         } 
    }

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    Oui ca ne me faut aucune erreur, mais j'arrive pas à interagir avec la checkbox, je ne peux pas pas exemple la mettre checked ou non, vérifié s'il elle l'est déjà, je ne peux pas changer son texte. La compile tout est ok, le prog ne plante pas, mais il ne se passe rien du tout.

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Faut que tu débugges un peu pour être sur que ton programme passe bien dans les boucles, etc....

    J'ai fait tout ca hier soir, de tête....

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    C'est déjà fait et cette condition n'est jamais vrai..J'ai cherché la solution mais pour ca je galère méchant...ca m'enerve...pourquoi y a pas de tableau de contrôles...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (  chk.GetType() == Type.GetType("System.Windows.Forms.CheckBox") )

  12. #12
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    Dans la boucle tu dois rajouter, la position (propriété Location), la taille (propriété Size).
    Regarde le code généré par VS quand tu mets un checkbox avec le mode design. Tu verras toutes les propriétés qu'il affecte et tu dois faire de même dans ta boucle.


    Quand on te dis de faire this.Controls.Add(ck); , cela rajoute le checkbox dans ton formulaire. Mais est ce ton formulaire le vrai conteneur, ou est ce un panel, un groupbox, ou autre ?

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    Citation Envoyé par DrQ
    Dans la boucle tu dois rajouter, la position (propriété Location), la taille (propriété Size).
    Regarde le code généré par VS quand tu mets un checkbox avec le mode design. Tu verras toutes les propriétés qu'il affecte et tu dois faire de même dans ta boucle.


    Quand on te dis de faire this.Controls.Add(ck); , cela rajoute le checkbox dans ton formulaire. Mais est ce ton formulaire le vrai conteneur, ou est ce un panel, un groupbox, ou autre ?
    Tout cela est fait, et c'est bien mon formulaire qui est conteneur
    Voici ma boucle de création :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int tmp=40;
    			for(int i=0;i<=10;i++)
    			{
     
    				chk=new CheckBox();
    				chk.Size=new Size(40,20);
    				chk.Location=new Point(560,tmp);
    				chk.Name="chk"+i.ToString();
    				tmp=tmp+20;
    				this.Controls.Add(chk);
     
    			}
    TOut s'affiche bien comem je le désire, il y'a jsute que je n'arrive pas à interragir avec. Je devrai avoir plsu ou moins 100checkbox dans mon appli, je ne peux me permettre de gérer en static et manuellement une à une dans mes traitements...

  14. #14
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    Rien à faire, j'arrive jamais à rentrer dans le IF a croire qu'il ne trouve jamais de controle ck de type Checkbox...Je ne sais plus quoi faire...En plsu la création dynamique est quelque chose d'essentiel en programmation...
    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
     
    		private void button6_Click(object sender, System.EventArgs e)
    		{
     
    			int tmp=40;
    			for(int i=0;i<=10;i++)
    			{
     
    				chk=new CheckBox();
    				chk.Size=new Size(40,20);
    				chk.Location=new Point(560,tmp);
    				chk.Name="chk"+i.ToString();
    				tmp=tmp+20;
    				this.Controls.Add(chk);
     
    			}
    		}
     
    		private void button7_Click(object sender, System.EventArgs e)
    		{
    			this.textBox1.Text="Bouton cliqué";
    			foreach ( Control chk in this.Controls )
    			{
    				this.textBox2.Text="Control chk for each";
    				if (chk.GetType() == Type.GetType("System.Windows.Forms.CheckBox"))
    				{
    					this.textBox2.Text="If get type";
    					if ( chk.Name == "chk3" )
    					{
    						this.textBox2.Text="chk3 sélectionné";
    						this.chk.Checked=true;	
    					}
    				}
    			} 
    		}
    Pourtant je ne pense pas qu'il y ait d'erreur la dessus, ej susi revenu sur du super simple...Je commence vraiment à désepéré...

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut
    Essaye :

    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
     
     
             foreach ( Control chk in this.Controls )
             {
                this.textBox2.Text="Control chk for each";
                if (chk is CheckBox)
                {
                   this.textBox2.Text="If get type";
                   if ( chk.Name == "chk3" )
                   {
                      this.textBox2.Text="chk3 sélectionné";
                      this.chk.Checked=true;   
                   }
                }
             }

  16. #16
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    Ca marche, il prends tout les if mais je n'arrive pas à agir sur le ck qui est actuellement selectionné dans le if...Je test les select

  17. #17
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    Alors il semblerait que le problème soit que ma checkbox soit vu comme un control qui n'as pas les proriétés d'une checkbox, que faire pour évité le problème? Je ne pusi donc pour l'instant que modifié le texte de celle mais la checké ou tester si elle l'est, ca ne veut pas...pcq il n'y a pas de définition pour cela...Que faire ?

    Ajout je n'arrive qu a utilisé les propriété communes a tous els contrôles...O joie...Pq ? Je veux juste savoir si la checkbox est cheché et au besoin le faire.

  18. #18
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    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
     
          private void button7_Click(object sender, System.EventArgs e) 
          { 
             this.textBox1.Text="Bouton cliqué"; 
             foreach ( Control ctl in this.Controls ) 
             { 
                this.textBox2.Text="Control chk for each"; 
                if (ctl.GetType() == Type.GetType("System.Windows.Forms.CheckBox")) 
                { 
                   CheckBox chk = (CheckBox)ctl;
                   this.textBox2.Text="If get type"; 
                   if ( chk.Name == "chk3" ) 
                   { 
                      this.textBox2.Text="chk3 sélectionné"; 
                      this.chk.Checked=true;    
                   } 
                } 
             }

  19. #19
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 11
    Par défaut
    Merci, j'essayais directement de caster mon chk sans passer par un contrôle. Maintenant ca marche impeccable, et pour toutes sortes de contrôles. Je peux tous les gérer de facon dynamique.

    Un grand merci à tous vous avez été super !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création dynamique checkbox caption plage feuille cachée
    Par Xiombarg2911 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/05/2008, 11h36
  2. [C#] Création dynamique de checkbox
    Par Choumy dans le forum Windows Forms
    Réponses: 12
    Dernier message: 24/08/2007, 13h31
  3. [Struts]Création dynamique de checkbox
    Par joy5 dans le forum Struts 1
    Réponses: 27
    Dernier message: 02/05/2006, 16h32
  4. [C#] Création dynamique checkbox
    Par diaboloche dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/02/2006, 11h44

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