Comment ajouter des événement a des Objects créer dynamiquement

Résolu
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 - 9 nov. 2010 à 21:38
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 - 10 nov. 2010 à 19:51
bonjour,

je suis au cour de création d' un jeux RPG 2D basé sur Mysql bon mon problème consiste a ajouter des évènement a des "PictureBox" un menu de chat PM


1 fonction de mise ajour des joueur sur la carte (en ajoute un pictureBox pour chaque joueur dans le jeux)


  public void displayPlayers()
        {
            MySqlConnection connection = new MySqlConnection(myconstring);
            MySqlCommand command = connection.CreateCommand();
            MySqlDataReader reader;
            command.CommandText = "select * from player where id_play!="+myid+"";
            connection.Open();
            reader = command.ExecuteReader();
            int i = 0;
            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\player.png");
                Players.Add(new Player(reader.GetString(1),pic));
                this.Controls.Add(pic);
                i++;
                
            }
        }

Class Player
namespace Pkw_01
{
    class Player
    {
  
        public string Username { get; private set; }
        public PictureBox Picturebox { get; private set; }
        public Player(string name, PictureBox picturebox)
        {
            Username = name;
            Picturebox = picturebox;
        }

    }
}



comme vous avez vu en a créer des PictureBox pour chaque joueur mis dans une liste :
List Players = new List(); 


je ne sais pas comment ajouter des évènement pour chaque picturebox j'ai essayer de
l'écrire comme ça : private void pictureBox[i]_MouseDown(object sender,....

pour ce qui veule consulter le projet (base Mysql inclue)
basic Oline game

je cherche un développeur intéressé a développer ce type de jeux (débutant ou pro)
Skype: jihed777

merci d'avance

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 nov. 2010 à 11:12
Les objets qui sont posés sur la form au moment de la conception, tu peux utilise les fonctionnalités de l'IDE pour abonner les évènements.

Pour les objets que tu crée dynamiquement, il faut faire l'abonnement pour chacun des objets. Tu peux le faire au moment de la création, par exemple juste après avoir ajouter le contrôle à la collection des contrôles de la form.

Quant à la procédure qui va traiter l'évènement, si nécessaire, une seule procédure peut être abonnée au même évènement de plusieurs contrôles. Ce n'est pas gênant. Le paramètre Sender de cette procédure contiendra justement le contrôle qui a déclenché l'évènement. Donc si tu as besoin de différencier les contrôles déclencheurs dans la procédure, tu peux te baser sur ce paramètre.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 1
10 nov. 2010 à 15:22
Bien le bonjour à tous,

Je pense que Casy a tout dit. Je me permet cependant de mettre à disposition le code en relation avec l'explication.

public void displayPlayers()
{
   MySqlConnection connection = new MySqlConnection(myconstring);
   ...
   while (reader.Read())
   {
       PictureBox pic = new PictureBox();
       ...
       pic.Image = Image.FromFile(@"C:\Users\jumperx\Desktop\player.png");
       pic.MouseDown += new EventHandler(pb_MouseDownHandler);
       Players.Add(new Player(reader.GetString(1),pic));
       ...
    }
}

private void pb_MouseDownHandler(object sender, MouseEventArgs e)
{
    var currPb = sender as PictureBox;
    if(currPb != null)
    {
       //Faire le traitement sur la pb lors de l'évènement.
    }
}


Avec le code présenté ci-dessus, le handler pb_MouseDownHandler sera appelé lors de la pression d'un bouton de la souris sur quelque pictureBox que ce soit. currPb contiendra la référence de la PictureBox où l'évènement s'est produit.

Shao.

Shao.
3
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 1
10 nov. 2010 à 19:51
c'est exactement ce que je voulez un exemple merci les amis vraiment des PRO
1
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 nov. 2010 à 23:28
Pour t'abonner à l'évènement MouseDown de ta picturebox pic, tu dois faire ceci (pour chaque picture box) :
pic.MouseDown += new EventHandler(PB_MouseDown);


PB_MouseDown est à remplacer par le nom de la méthode qui doit gérer l'évènement de cette picturebox.



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0

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

Posez votre question
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 1
10 nov. 2010 à 10:23
merci casy

mais comment je peut ajouter un évènement pour tout les objet présent sur le form
je ne peut pas bien sure ajouter les évènement manuellement
0
Rejoignez-nous