在 MouseDown 事件,或别的鼠标事件中,事件类型 MouseEventArgs 参数 e 传进来的 X,Y 值是鼠标相对所在控件中的坐标值。
控件的 Location 属性用 Point(int x,int y) 结构指定,是控件的 Left 、Top 值的另一种表示。
private int x, y, x1, y1;
private bool BeginDraged = false;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X; y = e.Y; //标记鼠标在控件里的坐标
if (BeginDraged) BeginDraged = false; else BeginDraged = true; //转换鼠标被按下的状态
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (BeginDraged)
{
x1 = pictureBox1.Left + e.X - x; //当鼠标被按下的时候
y1 = pictureBox1.Top + e.Y - y; //标记控件的位置为控件当前的位置-鼠标在空间里的坐标+鼠标移动的距离
pictureBox1.Location = new Point(x1, y1);//使控件跟随光标移动
}
}