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

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

Votre réponse

5 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
10 nov. 2010 à 11:12
3
Merci
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

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_casy
Meilleure réponse
Messages postés
155
Date d'inscription
jeudi 12 mai 2005
Dernière intervention
8 mars 2011
10 nov. 2010 à 15:22
3
Merci
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.

Merci Shaolyne 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Shaolyne
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
9 nov. 2010 à 23:28
0
Merci
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
Messages postés
144
Date d'inscription
jeudi 27 mars 2008
Dernière intervention
3 septembre 2011
10 nov. 2010 à 10:23
0
Merci
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
Messages postés
144
Date d'inscription
jeudi 27 mars 2008
Dernière intervention
3 septembre 2011
10 nov. 2010 à 19:51
0
Merci
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.