//移动窗体参数
bool beginMove = false;
int currentXPosition;
int currentYPosition;
private void panel_up_button_MouseDown(object sender, MouseEventArgs e)
{
beginMove = true;
currentXPosition = MousePosition.X;
currentYPosition = MousePosition.Y;
this.Refresh();
}
private void panel_up_button_MouseLeave(object sender, EventArgs e)
{
//设置初始状态
currentXPosition = 0;
currentYPosition = 0;
beginMove = false;
}
private void panel_up_button_MouseMove(object sender, MouseEventArgs e)
{
if (beginMove)
{
//根据鼠标X坐标确定窗体X坐标
this.Left += MousePosition.X - currentXPosition;
//根据鼠标Y坐标确定窗体Y坐标
this.Top += MousePosition.Y - currentYPosition;
currentXPosition = MousePosition.X;
currentYPosition = MousePosition.Y;
}
}
private void panel_up_button_MouseUp(object sender, MouseEventArgs e)
{
beginMove = false;
}
第二种方法
Point mouseOff;//鼠标移动位置变量
bool leftFlag;//标签是否为左键
private void panel_up_button_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOff = new Point(-e.X, -e.Y); //得到变量的值
leftFlag = true; //点击左键按下时标注为true;
}
}
private void panel_up_button_MouseMove(object sender, MouseEventArgs e)
{
if (leftFlag)
{
Point mouseSet = Control.MousePosition;
mouseSet.Offset(mouseOff.X, mouseOff.Y); //设置移动后的位置
Location = mouseSet;
}
}
private void panel_up_button_MouseUp(object sender, MouseEventArgs e)
{
if (leftFlag)
{
leftFlag = false;//释放鼠标后标注为false;
}
}