Limiter le nombre de checkbox coché

therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010 - 18 juin 2008 à 14:54
Boris_le_kossovar Messages postés 6 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 6 septembre 2008 - 6 sept. 2008 à 00:29
Bonjour,

Voilà mon problème, j'ai mis dans un FlowLayout panel un bouton, une checkbox et une textbox. A chaque fois que j'appuie sur un bouton indépendant, je crée ce flowlayout afin de créer dynamiquement cet ensemble dans une form. Ceci marche parfaitement mais j'aimerais que parmi toutes les checkbox créées il n'y en ai que 3 qui soit cochés. Comment faire ce test?

Bonne journée

5 réponses

HansPrestat Messages postés 61 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 29 juin 2008
18 juin 2008 à 15:52
Peux tu envoyer le code?
0
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010
18 juin 2008 à 16:10
alors voilà ils sont initialisé comme ça:



class GrElementsRea : FlowLayoutPanel
    {
        Accueil modele;

        ProduitRealisation prod;
        //Le bouton est public pour permettre l'ajout
        //d'un écouteur dans la classe qui le contient
        public Button btn_suppr = new Button();
        public Button btn_editer = new Button();
 
        public GrElementsRea(ProduitRealisation pr)
        {
            modele = Accueil.getInstance();
            prod = pr;
            TextBox tb_titre = new TextBox();
            tb_titre.Size = new System.Drawing.Size(153, 20);
            tb_titre.Text = prod.Titre();
         .
         .
         .
            CheckBox checkBox = new CheckBox();
            checkBox.Size = new System.Drawing.Size(15, 14);
          
            checkBox.CheckedChanged += new System.EventHandler(this.checkBox_CheckedChanged);

            this.FlowDirection = FlowDirection.LeftToRight;
            this.Controls.Add(tb_titre);
            this.Controls.Add(checkBox);        

        }

et je les crée comme ça:

 private void paint()
        {
            for (int j = 0; j < modele.getNosRealisations().nos_produits.Count; j++)
            {
                ProduitRealisation pr = ((ProduitRealisation)modele.getNosRealisations().nos_produits[j]);
                GrElementsRea gr = new GrElementsRea(pr);          
                gr.Location = new Point(26, 168 + 30 * j);
                gr.Size = new Size(400, 30);              
                panel1.Controls.Add(gr);
                mesControles.Add(gr);
               
            }
        }

donc en clair je crée des éléments dynamiquement et je veux pouvoir limiter le nombre de checkbox cochées.

merci d'avance!!!
0
cs_Ethan Messages postés 23 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 16 novembre 2009
18 juin 2008 à 16:52
pour savoir le nombre de checkbox checkée, je ferai comme çà :

int nbrCheckedBox = 0;

foreach Control ctl in taForm.Controls
{
   if (Ctl is Checkbox && ((CheckBox)Ctl).Checked)
   {
      nbrCheckedBox++;
   }
}

ou si tous tes checkbox sont dans un panels, je ferai comme çà

int nbrCheckedBox = 0;

foreach Control ctl in taForm.tonPanel.Controls
{
   if (Ctl is Checkbox && ((CheckBox)Ctl).Checked)
   {
      nbrCheckedBox++;
   }
}

Après à toi de tester dans ton événement Checked si (nbrCheckedBox < nbrCheckedBoxMax) alors checké sinon afficher un message d'erreur

Voilà j'espère t'avoir aider ....
Ethan
0
cs_Ethan Messages postés 23 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 16 novembre 2009
18 juin 2008 à 16:58
ben imbrique les foreach :

int nbrCheckedBox = 0;

foreach (Control ctl in taForm.tonPanel.Controls)
{
   if (Ctl is Panel)
   {
      foreach (Control cbx in ctl.Controls)
      {
         if (cbx is Checkbox && ((CheckBox)cbx).Checked)
         {
            nbrCheckedBox++;
         }
      }
   }
}

Désolé je m'étais limiter au titre ...
Ethan
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Boris_le_kossovar Messages postés 6 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 6 septembre 2008
6 sept. 2008 à 00:29
Moi je ferai juste un int avec une incrémentation de la variable et si cette variable > a ton int max alors non checked = false;
Plus simple mais plus lourd
0
Rejoignez-nous