Créer une série de pictureBox dynamiquement

Résolu
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 - 31 oct. 2010 à 21:17
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 1 nov. 2010 à 17:19
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

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
1 nov. 2010 à 15:06
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!
3
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 1
1 nov. 2010 à 15:43
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
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
1 nov. 2010 à 17:19
De rien
le plaisir est pour moi


C# is amazing, enjoy it!
0
Rejoignez-nous