1. 封装成方法
//第一个参数指的是鼠标放在所属控件上才可以移动
//第二个控件指的是谁移动了,因为此方法一般都写在load事件中,可用this代替
public void Move(Control con, Control conmove)
{
//1.定义坐标
int a = 0;
int b = 0;
//2.定义鼠标是否按下
bool isDown = false;
//3.鼠标按下时
con.MouseDown += (s, e1) =>
{
//记录下坐标
a = e1.X;
b = e1.Y;
//改变鼠标状态
con.Cursor = Cursors.SizeAll;
isDown = true;
};
//4.鼠标抬起时
con.MouseUp += (s, e1) =>
{
con.Cursor = Cursors.Default;
isDown = false;
};
//5.鼠标移动时
con.MouseMove += (s, e1) =>
{
if (isDown)
{
conmove.Left = MousePosition.X - a;
conmove.Top = MousePosition.Y - b;
}
};
}
2.调用
private void Form1_Load(object sender, EventArgs e)
{
Move(panel1, this);
}