Une arraylist désespérante...

Résolu
parlaciel Messages postés 33 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 22 décembre 2009 - 28 avril 2008 à 19:01
parlaciel Messages postés 33 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 22 décembre 2009 - 29 avril 2008 à 08:42
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

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
28 avril 2008 à 19:42
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 );
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
28 avril 2008 à 19:31
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.
0
parlaciel Messages postés 33 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 22 décembre 2009 1
29 avril 2008 à 08:42
merci pour ce conseil je vais chercher comment utiliser la list!!!!
0
Rejoignez-nous