none
crer un boucle pour simplifier les codes RRS feed

  • Question

  • bonjou

     j'avance bien sur mon projet mais je me trouve devant un nombre important de picturbox appeles 'pic2 à pic42"

     je voudrais ecriree une boucle pour    pouvoir faire un remove sur cet ensemlbe voici mon code

                        this.Controls.Remove(pic2);
                            this.Controls.Remove(pic3);
                            this.Controls.Remove(pic4);
                            this.Controls.Remove(pic5);
                            this.Controls.Remove(pic6);
                            this.Controls.Remove(pic7);
                            this.Controls.Remove(pic8);
                            this.Controls.Remove(pic9);
                            this.Controls.Remove(pic10);
                            this.Controls.Remove(pic11);
                            this.Controls.Remove(pic12);
                            this.Controls.Remove(pic13);
                            this.Controls.Remove(pic14);
                            this.Controls.Remove(pic15);
                            this.Controls.Remove(pic16);
                            this.Controls.Remove(pic17);
                            this.Controls.Remove(pic18);
                            this.Controls.Remove(pic19);
                            this.Controls.Remove(pic20);
                            this.Controls.Remove(pic21);
                            this.Controls.Remove(pic22);
                            this.Controls.Remove(pic23);
                            this.Controls.Remove(pic24);
                            this.Controls.Remove(pic25);
                            this.Controls.Remove(pic25);
                            this.Controls.Remove(pic26);
                            this.Controls.Remove(pic27);
                            this.Controls.Remove(pic28);
                            this.Controls.Remove(pic29);
                            this.Controls.Remove(pic30);
                            this.Controls.Remove(pic31);
                            this.Controls.Remove(pic32);
                            this.Controls.Remove(pic33);
                            this.Controls.Remove(pic34);
                            this.Controls.Remove(pic35);
                            this.Controls.Remove(pic36);
                            this.Controls.Remove(pic37);
                            this.Controls.Remove(pic38);
                            this.Controls.Remove(pic39);
                            this.Controls.Remove(pic40);
                            this.Controls.Remove(pic41);
    
    

    comment faire pour pouvoir  écrire une boucle for(int i =2; i<=48;i++)

    je n'arrive pas a écrie les pic avec indice i  comme exemple  this.controls.remove(pic(i));

    esse possible merci de votre aide

    mardi 27 septembre 2016 15:10

Réponses

  • Bonjour,

    Il faut instancier vos PictureBox avant de pouvoir assigner vos propriétés, donc mettre :

    pic1 = new PictureBox();
    pic2 = new PictureBox();

    avant :

    pic1.Size = ...

    Et attention, mettez votre pic2 à l'indice 1 du tableau :

     

    pcbArray[0] = pic1;
    pcbArray[1] = pic2; // il y a 2 éléments dans le tableau
     

    Cordialement,

    • Marqué comme réponse SIMONGEORGES mercredi 28 septembre 2016 11:57
    mercredi 28 septembre 2016 10:46

Toutes les réponses

  • Bonjour SIMONGEORGES,

    Le plus simple serait de placer toutes vos PictureBox dans un tableau (ou une liste) et de faire une boucle sur celui-ci en supprimant à chaque itération la PictureBox à l'indice i :

    public class Form1 : Form
    {
        private PictureBox[] pcbArray;
        private PictureBox pic1;
    
        public Form1()
        {
            pcbArray = new PictureBox[1];
            InitializeComponent();
    
            // exemple
            pic1 = new PictureBox();
            [...]
            // on ajoute la picturebox dans le tableau
            pcbArray[0] = pic1;
        }
    
        [...]
    
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < pcbArray.Length; i++)
            {
                this.Controls.Remove(pcbArray[i]);
            }
        }
    }

    Cordialement,

    • Marqué comme réponse SIMONGEORGES mardi 27 septembre 2016 21:41
    • Non marqué comme réponse SIMONGEORGES mercredi 28 septembre 2016 10:26
    mardi 27 septembre 2016 18:36
  • merci je vais le tester

    mardi 27 septembre 2016 21:17
  • bonjour

    je viens d'essayer le code mais j'obtiens une erreur que je sais pas  arreter pouvez vous m'iader

        public partial class Form1 : Form
       {
            private PictureBox[] pcbArray;
            private PictureBox pic1;
    
    
            public Form1()
            {
                pcbArray = new PictureBox[2];
                InitializeComponent();
    
                // exemple
    
                pic1.Size = new Size(50, 50);
                pic1.SizeMode = PictureBoxSizeMode.StretchImage;
                pic1.Location = new Point(500, 50);
                pic1.Image = Properties.Resources.pomme_de_terre;
    
    
                pic2.Size = new Size(50, 50);
                pic2.SizeMode = PictureBoxSizeMode.StretchImage;
                pic2.Location = new Point(300, 50);
                pic2.Image = Properties.Resources.haricots;
    
    
                pic1 = new PictureBox();
                pic2 = new PictureBox();
    
            // on ajoute la picturebox dans le tableau
                pcbArray[0] = pic1;
                pcbArray[0] = pic2;
    
            }
            private void button1_Click(object sender, EventArgs e)
            {
    
                this.Controls.Add(pic1);
                this.Controls.Add(pic2);
    
    
    
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < pcbArray.Length; i++)
                {
                    this.Controls.Remove(pcbArray[i]);
                }
            }
        }
    

    voici la copie d’écran avec le résultat de l'erreur

    mercredi 28 septembre 2016 10:28
  • Bonjour,

    Il faut instancier vos PictureBox avant de pouvoir assigner vos propriétés, donc mettre :

    pic1 = new PictureBox();
    pic2 = new PictureBox();

    avant :

    pic1.Size = ...

    Et attention, mettez votre pic2 à l'indice 1 du tableau :

     

    pcbArray[0] = pic1;
    pcbArray[1] = pic2; // il y a 2 éléments dans le tableau
     

    Cordialement,

    • Marqué comme réponse SIMONGEORGES mercredi 28 septembre 2016 11:57
    mercredi 28 septembre 2016 10:46
  • bonjourun tres grand merci cela fonctionne bien
    mercredi 28 septembre 2016 11:58