如图:绿线是鼠标在要移动的Label上运动轨迹,红线则是Label的左顶点的运动轨迹。很明显红线箭头所在的点即为Label的左顶点最终应该在的位置,下面是具体实现的代码:
private Point mouse_offset;
//给要移动的label加上MouseDown事件
private void label1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) //判断是否是鼠标左键按下
{
mouse_offset = new Point(-e.X, -e.Y);
// e.X ,e.Y为鼠标按下时相对于Label的位置
}
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point mousePosition = Control.MousePosition; //得到鼠标当前的屏幕坐标
mousePosition.Offset(mouse_offset); //将mousePosition移动-e.X,-e.Y
this.Location = mousePosition; //设置Label的坐标(屏幕坐标)
}
}
相信你的Label应该可以随意跑了吧
本文介绍了一种在Windows窗体应用程序中实现Label控件拖动的方法。通过在Label上捕捉鼠标按下并移动的动作,使Label能够跟随鼠标进行移动。代码详细展示了如何利用C#来实现这一功能。

3万+

被折叠的 条评论
为什么被折叠?



