A Simple Class For Moving Controls At Runtime
Here Is The Class:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace MoveControl
{
sealed class clsMoveControl
{
public enum Direction
{
Any,
Horizontal,
Vertical
}
public static void StartMoving(Control cntrl)
{
StartMoving(cntrl, Direction.Any);
}
public static void StartMoving(Control cntrl, Direction dir)
{
StartMoving(cntrl, cntrl, dir);
}
public static void StartMoving(Control cntrl, Control container, Direction dir)
{
bool Dragging = false;
Point DragStart = Point.Empty;
cntrl.MouseDown += delegate(object sender, MouseEventArgs e)
{
Dragging = true;
DragStart = new Point(e.X, e.Y);
cntrl.Capture = true;
};
cntrl.MouseUp += delegate(object sender, MouseEventArgs e)
{
Dragging = false;
cntrl.Capture = false;
};
cntrl.MouseMove += delegate(object sender, MouseEventArgs e)
{
if (Dragging)
{
if (dir != Direction.Vertical)
container.Left = Math.Max(0, e.X + container.Left - DragStart.X);
if (dir != Direction.Horizontal)
container.Top = Math.Max(0, e.Y + container.Top - DragStart.Y);
}
};
}
}
}
How to Use Example :
1. Create a simple project .
2. On the load event of the form write the following coding
clsMoveControl.StartMoving(this);
This will make the form movable by clicking anywhare on the form and dragging it.
The same can be done for other controls like:
clsMoveControl.StartMoving(Button1); clsMoveControl.StartMoving(Panel1);

浙公网安备 33010602011771号