PictureBox non visible

Sussu49 Messages postés 3 Date d'inscription mardi 1 février 2011 Statut Membre Dernière intervention 2 février 2011 - 1 févr. 2011 à 18:40
SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 - 3 févr. 2011 à 13:22
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

Sussu49 Messages postés 3 Date d'inscription mardi 1 février 2011 Statut Membre Dernière intervention 2 février 2011
1 févr. 2011 à 18:47
PS : le int Y=0; est en dehors de la boucle for
0
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013
2 févr. 2011 à 10:50
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.
0
SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 1
2 févr. 2011 à 11:45
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.
0
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013
2 févr. 2011 à 12:01
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 1
2 févr. 2011 à 14:22
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
0
Sussu49 Messages postés 3 Date d'inscription mardi 1 février 2011 Statut Membre Dernière intervention 2 février 2011
2 févr. 2011 à 21:30
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]);
                    
                }
            }
0
SaiYan5102 Messages postés 69 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 15 mars 2011 1
3 févr. 2011 à 13:22
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).
0
Rejoignez-nous