Créer une série de pictureBox dynamiquement

Résolu
Signaler
Messages postés
143
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
3 septembre 2011
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
bonjour,

je suis en cour de création d'un petit jeux OnLine de type RPG donc je doit ajouter un "PictureBox" pour chaque joueur présent dans ma Base de donnée en utilisant une boucle while par exemple ou autre


 MySqlConnection connection = new MySqlConnection(myconstring);
            MySqlCommand command = connection.CreateCommand();
            MySqlDataReader reader;
            command.CommandText = "select * from player";
            connection.Open();
            reader = command.ExecuteReader();
            int i = 0;
            while (reader.Read())
            {
                PictureBox pic[i] = new PictureBox();
                pic[i].Image = Image.FromFile(@"C:\Users\jumperx\Desktop\playerimg.png");
                this.Controls.Add(pic);
                string playername[i] = reader.GetValue(1).ToString();
                int x = Convert.ToInt32(reader.GetValue(3).ToString());
                int y = Convert.ToInt32(reader.GetValue(4).ToString());
                pic[i].Location = new Point(x, y);
i++;
            }



pour ceux qui cherche la connexion c# Mysql vous pouvez utiliser mysqlconnector.NET
merci d’avance

3 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
Bonjour

Il me semble que tu n'es pas loin d'y arriver
mais il y a un probleme avec le tableau "pic"
passe plutot par une liste, c'est plus souple.

ex:
tu définis une class player
internal class Player
{
public string Username { get; private set; }
public PictureBox Picturebox { get; private set; }
public Player(string name, PictureBox picturebox)
{
Username = name;
Picturebox = picturebox;
}
}

dont tu crées une liste, dans les variables globales de ta classe
 List Players = new List();


puis dans ta boucle tu remplis la liste
while (reader.Read())
{
    PictureBox pic = new PictureBox();
    int x = Convert.ToInt32(reader.GetValue(3).ToString());
    int y = Convert.ToInt32(reader.GetValue(4).ToString());
    pic.Location = new Point(x, y);
    pic.Image = Image.FromFile(@"C:\Users\jumperx\Desktop\playerimg.png");
    
    Players.Add(new Player(reader.GetString(1),pic);
    this.Controls.Add(pic);
}





petite info,
si les valeurs de postion, dans ta base, son déjà des entiers, plutot que de passer par une string
utilise reader.GetInt32() pour les récuperer



C# is amazing, enjoy it!
Messages postés
143
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
3 septembre 2011
1
merci Robert33

je ne sait pas comment j'ai pu oublier d'utilisé les classes
votre code est parfait vraiment vraiment géniale je peut et sur le même principe je voit les chose en claire encore merci

moi aussi j'adore C# c'est un langage de programmation parfait
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
De rien
le plaisir est pour moi


C# is amazing, enjoy it!