2011-10-05 4 views
1

J'essaie de créer des cases à cocher dynamiques dans une boucle for. Mais je reçois l'erreur pas pendant la compilation mais quand je cours créer le bouton de case à cocher et exécuter cette fonction. Pouvez-vous s'il vous plaît me dire ce que je fais mal?C# cases à cocher dynamiques création

public void CreateCheckBox (int i) 
     { 
       int y = 10; 
       CheckBox[] _cb = new CheckBox[i]; 
       String chkBox = "chkBox_"; 
       for (int n = 0; n<i; n++) 
        { 
         _cb[n].Location = new Point(10, y); 
         _cb[n].Name= chkBox + n.ToString(); 
         form1.Controls.Add(_cb[n]); 
         y+= 15; 
        } 
     } 

Répondre

6

À l'intérieur de la boucle, vous devrez créer une nouvelle instance de case à cocher.

for (int n = 0; n<i; n++) 
{ 
    _cb[n] = new CheckBox(); 
    _cb[n].Location = new Point(10, y); 
    _cb[n].Name= chkBox + n.ToString(); 
    form1.Controls.Add(_cb[n]); 
    y+= 15; 
} 
+0

Merci Bala J'ajoute cette ligne maintenant. Ça a marché!! –

+0

Bala et si je veux supprimer une de ces cases à cocher? comment puis-je créer une chose form1.Controls.Remove()? –

+0

@ValNolav pour supprimer, vous pouvez faire 'Control cb = form1.FindControl (controlName); form1.Controls.Remove (cb); ' –

0

Lorsque vous définissez une Array de Checkboxes, les objets à l'intérieur du tableau sont initialisés à null. Vous devez créer une instance de la case à cocher en utilisant new Checkbox(). À mon avis, il n'est pas nécessaire de les enregistrer dans un Checkbox[] car le formulaire gère une collection de contrôles. Donc, cet extrait de code est peut-être plus lisible:

public void CreateCheckBox (int max) 
{ 
    String name = "chkBox_"; 
    int y = 10; 
    for (int i = 0; n < max; i++) 
    { 
     Checkbox current = new Checkbox(); 
     current.Location = new Point(10, y); 
     current.Name= name + i.ToString(); 
     form1.Controls.Add(current); 
     y+= 15; 
    } 
} 
+0

Je dois supprimer des zones de texte d'affilée en cochant la case dans la même ligne. Comment puis-je faire cela en cliquant sur un bouton ?? –

+0

Je vous recommande de stocker l'index de ligne dans la case à cocher. Tag, puis vous écoutez l'événement CheckedChanged dans la zone de texte (en utilisant + =) et dans le gestionnaire d'événements, prenez l'index de ligne de la balise de l'expéditeur. –