winform中所有控件继承的是Control 这个类;但是窗体继承的是Form,Form继承的是ContainerControl和Control也是继承关系,直接用Control获得窗体就可以移动窗体了,就ok
//控件移动类
public class Mouse
{
private Point p;
private Control c;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="px">坐标</param>
/// <param name="co">控件</param>
public Mouse(Point px, Control co)
{
c = co;
p = px;
}
public void MouseMove(object sender, MouseEventArgs e)
{
//判断按下的是否为鼠标左键
if (e.Button == MouseButtons.Left)
{
//窗体位置坐标=窗体在屏幕的坐标+鼠标的坐标-鼠标在窗体内点击的坐标
c.Location = new Point(c.Location.X + e.X - p.X,
c.Location.Y + e.Y - p.Y);
}
}
public void MouseDown(object sender, MouseEventArgs e)
{
p = new Point(e.X, e.Y);
}
}
调用
//控件移动
Mouse ms = new Mouse(new Point(), textBox1);
textBox1.MouseMove += ms.MouseMove;
textBox1.MouseDown += ms.MouseDown;
//窗体移动
Control co = this;
Mouse s = new Mouse(new Point(), co);
MouseMove += s.MouseMove;
MouseDown += s.MouseDown;