PictureBox non visible

Signaler
Messages postés
3
Date d'inscription
mardi 1 février 2011
Statut
Membre
Dernière intervention
2 février 2011
-
Messages postés
69
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
15 mars 2011
-
Bonjour ,

Dans le cadre de mon BTS , je dois réaliser deux PTI's
Un de mes PTI est un démineur .
Pour les cases du démineur , j'ai créer un tableau de PictureBox .
Je décide donc de créer des PictureBox dynamiquement à l'aide d'une boucle .
Jusque là pas de soucis . Le problème , c'est lors de la création des PictureBox , elles sont invisibles .

Voici mon code :

PictureBox[,] tabDem = new PictureBox[nbLignes, nbColonnes];     // Tableau pour mettre les picturebox

            for (i = 0; i < nbLignes; i++)
            {



                int X = 0;
                int Y =0;
                Y = Y + 39;
                for (j = 0; i < nbColonnes; i++)
                {

                    tabDem[i,j] = new PictureBox();                 // création de la pictureBox dans le tableau
                 //   tabDem[i, j].Name = "pb" + i.ToString() + j.ToString();
                    tabDem[i, j].Location = new Point(X+35, Y);     
                    tabDem[i,j].Size = new Size(20, 20);
                    tabDem[i, j].BorderStyle BorderStyle.Fixed3D;
                    tabDem[i,j].Image = Properties.Resources.fond ;
                    tabDem[i, j].Visible = true;
                    
                    MessageBox.Show(tabDem[i, j].Name.ToString());
                    
                }
            }



Merci d'avance

PS : Etant novice ici , je m'excuse si je me suis trompé de section

7 réponses

Messages postés
3
Date d'inscription
mardi 1 février 2011
Statut
Membre
Dernière intervention
2 février 2011

PS : le int Y=0; est en dehors de la boucle for
Messages postés
102
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 janvier 2013

Bonjour,

Tes boucles n'étaient pas bonnes premièrement et tes coordonnées non plus.
Ensuite il faut que tu ajoute tes PictureBox à ta Form en utilisant this.Controls.Add(...);

int Y =0;
            for (i = 0; i < nbLignes; i++)
            {
                int j = 0;
                int X = 0;
                Y = Y + 39;
                for (j = 0; j < nbColonnes; j++)
                {
                    X += 35;
                    tabDem[i,j] = new PictureBox(); // création de la pictureBox dans le tableau
                    //tabDem[i, j].Name = "pb" + i.ToString() + j.ToString();
                    tabDem[i, j].Location = new Point(X, Y);     
                    tabDem[i,j].Size = new Size(20, 20);
                    tabDem[i, j].BorderStyle = BorderStyle.Fixed3D;
                    //tabDem[i,j].Image = Properties.Resources.fond ;
                    tabDem[i, j].Visible = true;
                    this.Controls.Add(tabDem[i, j]);
                    //MessageBox.Show(tabDem[i, j].Name.ToString());
                    
                }
            }


En espèrant avoir pu t'aider.
Messages postés
69
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
15 mars 2011
1
Re,

J'essaye de faire ce que tu as dis pour le this.Controls..., soit :
this.Controls.Add(pb); // car j'ai fais plus haut pb = new PictureBox();


Mais il me réclame en argument un "System.Web.Ui.Control", le picturebox ne lui convient apparemment pas.

Merci pour ton aide.
Messages postés
102
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 janvier 2013

Comme je te disais, je ne connais pas les particularités de l'ASP donc il doit bien y avoir une subtilité pour l'ajout d'objet au control.

Il faut chercher sur cette piste, je n'ai pas la réponse.
Messages postés
69
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
15 mars 2011
1
Je pense que le problème vient du fait que j'ai fait une Web Form et non une Windows Form.

Cependant quand je fais "ajouter un nouvel élément" dans mon projet il ne me propose pas "Windows Form".

Vu sur un autre site :
public class PictureBoxImageAdding : System.Windows.Forms.Form


Moi j'ai :
public partial class WebForm1 : System.Web.UI.Page
Messages postés
3
Date d'inscription
mardi 1 février 2011
Statut
Membre
Dernière intervention
2 février 2011

Tout d'abord , merci pour votre aide .*

J'ai corrigé mes erreurs .

J'ai essayer comme vous me l'aviez dit mais ça ne marche toujours pas , mes pictureBox ne sont toujours pas visible



          PictureBox[,] tabDem = new PictureBox[nbLignes, nbColonnes];     // Tableau pour mettre les picturebox
            int Y = 0;

            for (i = 0; i < nbLignes; i++)
            {
                int X = 0;
                
                Y = Y + 39;                                         // incrémentation de la pictureBox vers le bas 
                for (j = 0; j < nbColonnes; j++)
                {
                    X += 35;
                    tabDem[i,j] = new PictureBox();                 // création de la pictureBox dans le tableau
                    tabDem[i, j].Location = new Point(X, Y);     // Mise en place de la pictureBox
                    tabDem[i,j].Size = new Size(20, 20);            // Définition de la taille de la pictureBox
                    tabDem[i, j].BorderStyle = BorderStyle.Fixed3D; // Mise de bordure aux pictureBox
                    tabDem[i,j].Image = Properties.Resources.fond ; // Mise en place de l'image dans la pictureBox
                    tabDem[i, j].Visible = true;                    // Rendre la pictureBox visible 
                    this.Controls.Add(tabDem[i,j]);
                    
                }
            }
Messages postés
69
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
15 mars 2011
1
Tu utilises une Windows Form ou une Web Form ? Car en cherchant j'ai vu que l'on ne peut pas afficher un contrôle "on the fly" dans une Web Form, il faut utiliser une Windows Form.

Sinon sur ce site http://www.silkwebware.net/default.aspx ils proposent un contrôle qui lui permet d'être affiché "on the fly" dans une Web Form. C'est le contrôle Image Canvas. L'inconvénient c'est qu'il est gratuit 15 jours après il faut payer.

Si quelqu'un a une solution alternative je suis preneur.

ps : Ou me dire comment ajouter une Windows Form à mon projet (j'utilise Web Developper 2008).