Probleme de drag (and drop)

Résolu
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 23 avril 2004 à 21:02
adsana Messages postés 42 Date d'inscription dimanche 22 février 2009 Statut Membre Dernière intervention 24 septembre 2009 - 9 avril 2009 à 22:16
Bonjour à tous,

Voila, je suis en train de m'amuser à developper un jeu de cartes.
Les cartes heritent de la classe UserControl.
J'aimerais pouvoir les deplacer a certains endroits de la "table de jeu".
Pour ca, j'utilise l'evenement MouseMove ainsi

private void Card_MouseMove(object sender, MouseEventArgs ea)
{
        if(ea.Button == MouseButtons.Left)
        	this.Location = new Point(ea.X, ea.Y);
}


Le probleme, c'est que la carte reagit en se "dedoublant".
En effet, la carte clignote rapidement en s'alternant entre 2 endroits de la form, sans reellement suivre le pointeur (elles suivent le pointeur de loin quand l'une bouge, l'autre se fige, puis apres c'est l'autre qui bouge).

Je sais pas comment ca se fait. Il doit bien y avoir une raison, mais je ne vois pas laquelle. Il y a peut-etre une methode adequate ?
Si quelqu'un à une explication et une solution, elle me serait d'une grande aide !

Merci !

a++
Mx

4 réponses

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
25 avril 2004 à 23:19
J'espère que ceci pourra t'aider, je l'avais utiliser lors d'une de mes developpements:

private Point _lastCardMove;

private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (!_mouseDown)
{
return;
}

Point mousePos = new Point(e.X,e.Y);

int dx = mousePos.X - _lastCardMove.X;
int dy = mousePos.Y - _lastCardMove.Y;

Point picLocation = pictureBox1.Location;
picLocation.Offset(dx,dy);
pictureBox1.Location = picLocation;

}

private bool _mouseDown = false;
private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
_mouseDown = true;
_lastCardMove = new Point(e.X,e.Y);
}

private void pictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
_mouseDown = false;
}


[Membre du Labo .NET]
Société TechNet-X
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 avril 2004 à 11:16
Je m'en vais essayer avec çà.
Merci beaucoup de m'avoir répondu !!! :big)
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 avril 2004 à 11:57
Génial, vraiment, c'est impeccable !
Merci infiniment !
0
adsana Messages postés 42 Date d'inscription dimanche 22 février 2009 Statut Membre Dernière intervention 24 septembre 2009
9 avril 2009 à 22:16
salut

je sais que ca fait longtemps pour ce message mais je trouve vraiment qu'elle décrit mon probleme puisque j'arrive pas à positionner librement mes composants dans mon listview à l'aide du drag n drop.
En essayant ce code, il s'avère que c'est le listview qui se déplace(en fait qui vibre puis reprend sa position initiale)à et non pas mon icone.en fait j'ai remplacé le pictureBox par listview:est ce ca la faute?
merci de m'aider à s'en sortir je serais vraiment reconnaissante.
merci
0
Rejoignez-nous