private Point MouseDownLocation; private void panel2_MouseMove(object sender, MouseEventArgs e) { var pan = (Panel)sender; if (e.Button == System.Windows.Forms.MouseButtons.Left) { pan.Left = e.X + pan.Left - MouseDownLocation.X; pan.Top = e.Y + pan.Top - MouseDownLocation.Y; } } private void panel2_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { var pan = (Panel)sender; List<Panel> allpanels = new List<Panel>(); foreach (Panel pancomp in panel1.Controls) { if (pancomp == pan) { continue; } allpanels.Add(pancomp); } //var pan = (Panel)sender; List<Panel> collisions = new List<Panel>(); foreach (Panel pancomp in allpanels) { if (pancomp == pan) { continue; } if (pan.Bounds.IntersectsWith(pancomp.Bounds)) { //PUSH AWAY collisions.Add(pancomp); //listBox1.Items.Add("collided!");//panel2.Location.ToString()); } } collisions = collisions; if (collisions.Count > 0) { //WE HAVE COLLISIONS LETS SNAP TO VALID PLACE //MouseDownLocation } else { //WE HAVE NO COLLISIONS LETS SNAP TO PLACE } } } private void panel2_MouseDown(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { MouseDownLocation = e.Location; } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)