在WinForm中,可以通过以下步骤实现控件自由拖动:
private Point mouseOffset; private void Control_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Control control = (Control)sender; mouseOffset = new Point(e.X, e.Y); } } private void Control_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Control control = (Control)sender; control.Left = e.X + control.Left - mouseOffset.X; control.Top = e.Y + control.Top - mouseOffset.Y; } } private void Control_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Control control = (Control)sender; control.Capture = false; } } // 绑定事件 yourControl.MouseDown += Control_MouseDown; yourControl.MouseMove += Control_MouseMove; yourControl.MouseUp += Control_MouseUp; 这样,当用户在控件上按下鼠标左键并移动时,控件将根据鼠标移动的位置自由拖动。