控件绑定这三个事件,在不停地在重写计算坐标,鼠标拖动窗体快点的话可以看到窗体跟不上的情况
需要点击哪里拖动就给谁注册这三个事件,不一定是窗体
#region 窗体移动
private Point mouseOff;//鼠标移动位置变量
private bool leftFlag;//标签是否为左键
private void Frm_MouseDown(object sender, MouseEventArgs e) //这个是鼠标点击
{
if (e.Button == MouseButtons.Left)
{
mouseOff = new Point(-e.X, -e.Y); //这个是鼠标相对窗体左上角的位置
leftFlag = true; //点击左键按下时标注为true;
}
}
private void Frm_MouseMove(object sender, MouseEventArgs e)
{
if (leftFlag)
{
Point mouseSet = Control.MousePosition;
mouseSet.Offset(mouseOff.X, mouseOff.Y); //光标和窗口左上角的位置保持一致就是托着不动了
Location = mouseSet; //窗口更新为新的位置
}
}
private void Frm_MouseUp(object sender, MouseEventArgs e)
{
if (leftFlag)
{
leftFlag = false;//释放鼠标后标注为false;
}
}
#endregion