//移動窗體參數
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;
}
}