Drag'n'Drop с возвращением - C#
Формулировка задачи:
Здравствуйте всем! Очень надеюсь на помощь. Пишу пасьянс "4 линии" на С#, и не могу сообразить, как сделать так, чтобы при перетаскивании карты на неверную позицию, она возвращалась в исходное положение?
Решение задачи: «Drag'n'Drop с возвращением»
textual
Листинг программы
//Берем карту
private void cards_MouseDown(object sender, MouseEventArgs e)
{
if (MouseButtons == MouseButtons.Left)
{
PictureBox mySender = sender as PictureBox;
isDragging = true;
currentX = e.X;
currentY = e.Y;
tmp = mySender.Location;
}
}
//Двигаем карту
private void cards_MouseMove(object sender, MouseEventArgs e)
{
PictureBox mySender = sender as PictureBox;
mySender.BringToFront();// На передний план!!! О_о
if (isDragging)
{
mySender.Top = mySender.Top + (e.Y - currentY);
mySender.Left = mySender.Left + (e.X - currentX);
}
}
//Отпускаем карту
private void cards_MouseUp(object sender, MouseEventArgs e)
{
isDragging = false;
PictureBox mySender = sender as PictureBox;
int differ_X, differ_Y;
differ_X = empty_card.X - mySender.Location.X;
differ_Y = empty_card.Y - mySender.Location.Y;
if ((Math.Abs(differ_X) > 0 && Math.Abs(differ_X) < 30) && (Math.Abs(differ_Y) > 0 && Math.Abs(differ_Y) < 30))
{
mySender.Location = empty_card;
empty_card = tmp;
}
else
{
mySender.Location = tmp;
}
}