Comment ajouter des événement a des Objects créer dynamiquement [Résolu]

jihednond 144 Messages postés jeudi 27 mars 2008Date d'inscription 3 septembre 2011 Dernière intervention - 9 nov. 2010 à 21:38 - Dernière réponse : jihednond 144 Messages postés jeudi 27 mars 2008Date d'inscription 3 septembre 2011 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 nov. 2010 à 11:12
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
Shaolyne 155 Messages postés jeudi 12 mai 2005Date d'inscription 8 mars 2011 Dernière intervention - 10 nov. 2010 à 15:22
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Shaolyne
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 9 nov. 2010 à 23:28
0
Utile
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
Commenter la réponse de cs_casy
jihednond 144 Messages postés jeudi 27 mars 2008Date d'inscription 3 septembre 2011 Dernière intervention - 10 nov. 2010 à 10:23
0
Utile
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
Commenter la réponse de jihednond
jihednond 144 Messages postés jeudi 27 mars 2008Date d'inscription 3 septembre 2011 Dernière intervention - 10 nov. 2010 à 19:51
0
Utile
c'est exactement ce que je voulez un exemple merci les amis vraiment des PRO
Commenter la réponse de jihednond

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.