winform实现窗口拖动

1、窗口的KeyPreview属性设置为true。

2、设置窗口的MouseDown和MouseMove事件,参考如下:

private Point offset;  

private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
  if (MouseButtons.Left != e.Button) return;

  Point cur = this.PointToScreen(e.Location);
  offset = new Point(cur.X - this.Left, cur.Y - this.Top);
}

private void MainForm_MouseMove(object sender, MouseEventArgs e)
{
  if (MouseButtons.Left != e.Button) return;

  Point cur = MousePosition;
  this.Location = new Point(cur.X - offset.X, cur.Y - offset.Y);
}

3、如果有其他控件(如Panel)覆盖,也需要处理事件。

posted @ 2017-11-29 09:50  都是城市惹的祸  阅读(568)  评论(0)    收藏  举报