拖动不规程窗体分三个步骤:
1、响应窗体Mouse_Down事件,记录鼠标左键按下时的坐标
2、响应窗体的Mouse_Move事件,获取当前鼠标相对屏幕的坐标减去以上获得X,Y坐标,赋值给窗体Location
3、响应窗体的Mouse_Up事件,释放拖动操作
Point _MouseOffset;
bool _IsMouseDown = false;
private void Form_MouseDown(object sender, MouseEventArgs e)
{
int xOffset;
int yOffset;
if (e.Button == MouseButtons.Left)
{
xOffset = -e.X;
yOffset = -e.Y;
_MouseOffset = new Point(xOffset, yOffset);
_IsMouseDown = true;
}
}
private void Form_MouseMove(object sender, MouseEventArgs e)
{
if (_IsMouseDown)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(_MouseOffset.X, _MouseOffset.Y);
Location = mousePos;
}
}
private void Form_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
_IsMouseDown = false;
}