#region using System.Drawing; using System.Windows.Forms; #endregion namespace CSFramework.Library.CommonClass { /// /// 拖动鼠标移动窗体Form通用类 /// public class FormDragDrop { private Form _form; private bool _IsMouseDown; private Point _MouseOffset; private FormDragDrop(Form form) { _form = form; } /// /// 使用方法 /// /// public static void Handle(Form form) { var F = new FormDragDrop(form); F.HandleEvents(); } private void HandleEvents() { _form.MouseDown += On_MouseDown; _form.MouseMove += On_MouseMove; _form.MouseUp += On_MouseUp; } private void On_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 On_MouseMove(object sender, MouseEventArgs e) { if (_IsMouseDown) { var mousePos = Control.MousePosition; mousePos.Offset(_MouseOffset.X, _MouseOffset.Y); _form.Location = mousePos; } } private void On_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) _IsMouseDown = false; } } }