J'ai un panneau, qui peut être déplacé vers la gauche ou la droite (choisi automatiquement en fonction de sa position actuelle, la distance est statique) par cliquez sur. En outre, l'utilisateur peut faire glisser le panneau verticalement comme il le souhaite en cliquant sur le panneau, en maintenant le bouton et en déplaçant sa souris. Le problème est que le panneau fait aussi le déplacement gauche/droite, quand il est déposé après avoir été déplacé verticalement, de sorte que l'utilisateur doit cliquer à nouveau dessus ensuite, pour obtenir le bon côté (gauche/droite). Voici les méthodes que je utilise: Ajout eventhandlers à panneau (appelé Strip ici)Vérifier si le panneau a bougé pendant MouseDown
Strip.MouseDown += new MouseEventHandler(button_MouseDown);
Strip.MouseMove += new MouseEventHandler(button_MouseMove);
Strip.MouseUp += new MouseEventHandler(button_MouseUp);
Strip.Click += new EventHandler(strip_Click);
Et ici toutes les méthodes mentionnées ci-dessus:
void button_MouseDown(object sender, MouseEventArgs e)
{
activeControl = sender as Control;
previousLocation = e.Location;
Cursor = Cursors.Hand;
}
void button_MouseMove(object sender, MouseEventArgs e)
{
if (activeControl == null || activeControl != sender)
return;
var location = activeControl.Location;
location.Offset(0, e.Location.Y - previousLocation.Y);
activeControl.Location = location;
}
void button_MouseUp(object sender, MouseEventArgs e)
{
activeControl = null;
Cursor = Cursors.Default;
}
void strip_Click(object sender, EventArgs e) // The one moving strip to left or right
{
activeControl = sender as Control;
if (activeControl.Left != 30)
activeControl.Left = 30;
else
activeControl.Left = 5;
}
Comment faire le panneau ne se déplacer à gauche ou à droite quand il a été déplacé verticalement?
Qu'est-ce ta question? – MyCodeSucks
Comment faire pour que le panneau ne bouge pas à gauche ou à droite lorsqu'il est déplacé verticalement. –
@HansPassant Essayé de remplacer 0 par 1, dès que je clique sur le panneau, il commence à se déplacer vers la droite. Il s'arrête quand je relâche le bouton de la souris, mais je ne peux pas le récupérer quand même. J'ai juste besoin de quelque chose comme "si location.y a changé -> garder la location.x la même chose (donc n'appliquez pas le strip_click) –