adsana
Messages postés42Date d'inscriptiondimanche 22 février 2009StatutMembreDernière intervention24 septembre 2009
-
28 avril 2009 à 23:08
adsana
Messages postés42Date d'inscriptiondimanche 22 février 2009StatutMembreDernière intervention24 septembre 2009
-
3 mai 2009 à 10:47
salut
je cherche à implanter un code permettant d'afficher une icône sur un picturebox en cliquant sur un bouton et d'appliquer ensuite les fonctionnalitées de drag n drop sur cette icone ,le problème c que à chaque foi que je clique sur le bouton il maffiche le meme icone(un seul) et non pas une à chque clic.
adsana
Messages postés42Date d'inscriptiondimanche 22 février 2009StatutMembreDernière intervention24 septembre 2009 1 mai 2009 à 12:59
bonjour
grace à ce code j'ai réussi à afficher l'icone suite à chaque clic, il me reste d'affecter les evenements du drag and drop pour l'icone affichée
merci
[int Num_PicBxs = 1;
private void button1_Click(object sender, EventArgs e)
{
PictureBox p = new PictureBox();
p.Location = new Point((Num_PicBxs*50)+20,+20);
p.Size = new Size(50, 50);
p.Image = Image.FromFile("d:\\laptop.ico");
panel1.Controls.Add(p);
Num_PicBxs++;
p.Show();
}]
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 1 mai 2009 à 17:16
Bonjour,
Veux-tu reelement utiliser un Drag-Drop, ou un déplacement ?
un Drag-Drop c'est quand on veut passer un control d'un control à un autre,
si c'est dans le même panel que tu veux déplacer ton icone il suffit de récuperer les évenements MouseXXXX et de déplacer la PictureBox;
ex:
adsana
Messages postés42Date d'inscriptiondimanche 22 février 2009StatutMembreDernière intervention24 septembre 2009 1 mai 2009 à 17:39
bonjour
oui c vrai en fait il s'agit du deplacement,merci commem pour votre reponse mais mon probleme reside le plus dans la manière de récuperer le nom du picturebox à laquelle je veux appliquer les evenements puisque la creation comme le montre mon code se fait au temps de l'exécution.
avez vous une idée?!
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 1 mai 2009 à 17:54
Re,
Ce n'est pas très compliqué en C#.
D'abord lors de la création des picture boc, tu ajoute un handle pour les evenements MouseXXX,
tu ajoute le même pour toutes les PictureBox:
p.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseUp);
p.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseMove);
p.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDown);
ensuite tu renommes les méthodes de l'exemple précedent, et tu modifies la methode pictureBox_MouseMove pour recuperer la pictureBox ayant émis l'évenement.
Puis sur le control cible, celui qui va recevoir le drop, ajoute les hanlder d'evenments pour DragEnter et DragDrop, pense à autoriser le DragDrop (AllowDrop = ture)
dans les hanlder d'evenements tu pourra récuperer la picture Box:
ex:
if (p!=
null)
{
Point clientPoint = panel2.PointToClient(
new Point(e.X, e.Y));
PictureBox clone =
new PictureBox();
clone.Size = p.Size;
clone.Image = p.Image;
clone.Location =
new Point(clientPoint.X-clone.Width/2,clientPoint.Y-clone.Height/2);
panel2.Controls.Add(clone);
clone.Show();
}
}
Dans l'exemple je fais une copie, on peut aussi utiliser le pointeur du control d'origine pour eviter la copie,
pour un déplacement il faudra enlever la picture box d'origine, cela se fait au retour de l'appel a DoDragDrop(...).
adsana
Messages postés42Date d'inscriptiondimanche 22 février 2009StatutMembreDernière intervention24 septembre 2009 1 mai 2009 à 18:14
merci vrmt pour votre aide et votre patience sauf que lors du test du 1er code concernant le deplacement il s'avère que dès que je déplace mon picturebox cette dernière se disparaisse!!!!
c du à quoi ca?
merci
adsana
Messages postés42Date d'inscriptiondimanche 22 février 2009StatutMembreDernière intervention24 septembre 2009 3 mai 2009 à 10:47
bonjour
en fait j'ai affiché les coordonnées(currentX,currentY) en deplacant mon picturebox,en faisant des translations,ses coordonnées ne correspondent pas à ce que doivent etre.
concernant le debugger,j'ai pas bien saisi comment ca se fait.
merci