Une arraylist désespérante... [Résolu]

Signaler
Messages postés
33
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
22 décembre 2009
-
Messages postés
33
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
22 décembre 2009
-
bonsoir à vous!!
j'ai un problème tout balot.... Qui m'a tenu tête tout l'aprés-midi et c' est en désespoir de cause  que  je poste ici.
J'ai une arraylist dans la quelle je stock différents types d'objets.
Ces objets au nombre de 6 sont ajoutés à chaque fois qu'on va cliker sur un bouton.
lorsque que je souhaite supprimer des objets qui se trouve dans le milieu de mon arraylist, il faut que la fin de mon arraylist comble le trou.
comme je suis persuadée de ne pas avoir été clair le code sera peut être plus parlant:

       private void button3_Click(object sender, EventArgs e)
        {
          Button suppr = new Button();
          Button edit = new Button();
          CheckBox ma_checkBox = new CheckBox();
          TextBox ma_textBox = new TextBox();
          Label titre = new Label();
          object mon_objet = new object();

         
          suppr = (Button)sender;
          int index = mes_elements.IndexOf(sender);
          edit = (Button)mes_elements[(index - 2)];
          nowForm = (Form10)mes_elements[(index - 1)];
          ma_checkBox = (CheckBox)mes_elements[index - 3];
          ma_textBox = (TextBox)mes_elements[index - 4];
          titre = (Label)mes_elements[index - 5];         
          mes_elements.RemoveRange(mes_elements.IndexOf(sender)-5,3);

          if (mes_elements[index + 1] != null)
          {              for (int t index; t dernier_index; t++)
              {
                  mon_objet = mes_elements[index + 1];
                  mes_elements.Insert((index - 6), mon_objet);
                  mes_elements.RemoveAt(index + 1);
              }
          }
          else return;

           Controls.Remove(titre);
          Controls.Remove(edit);
          Controls.Remove(suppr);
          Controls.Remove(nowForm);
          Controls.Remove(ma_textBox);
          Controls.Remove(ma_checkBox);           
        }

-mon premier problème c est que le test du if n'est pas bon, si jamais il n'y a rien derrière index , il me met une erreur, doncy a-t'il quelque chose de mieu  à mettre que null?
-deuxieme probleme , le décallage se fait dans mon arraylist mais pas correctement, il y a des index qui ne sont pas utilisés.

voila si jamais vous avez une solution, une demande de précision ou autre.... je suis toute ouïe!!!!
merci!!!

3 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Oups.. c'est vrai que l'ArrayList ( obsolète maintenant ) contrairement au Liste ne supporte pas l'indexeur avec une chaine de caractère. Si tu es en NET 2.0 utilise une liste :

List< Control > list = new List< Control >( 6 );
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Salut, à la suite des méthodes Insert, RemoveAt, RemoveRange etc.. l'ArrayList s'auto-arrange tout seul, il comble les trous comme tu dis. Il est possible de réduire l'espace vide de la fin avec la méthode TrimToSize mais dans ton cas c'est quasi-inutile. Si tu as du mal a retrouver tes éléments avec un index utilise un nom :

Object obj = myArrayList[ "Object1" ]; // La propriété Name doit avoir été assignée.
Messages postés
33
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
22 décembre 2009
1
merci pour ce conseil je vais chercher comment utiliser la list!!!!