panelContent.MouseDown += Panel_MouseDown;
// 为Panel添加鼠标移动事件处理程序
panelContent.MouseMove += Panel_MouseMove;
// 为Panel添加鼠标释放事件处理程序
panelContent.MouseUp += Panel_MouseUp;
private Point _dragStartPoint; // 用于存储鼠标按下时的Panel位置
private void Panel_MouseDown(object sender, MouseEventArgs e)
{
// 当鼠标按下时,记录鼠标位置与Panel位置的偏移量
_dragStartPoint = new Point(e.X, e.Y);
}
private void Panel_MouseMove(object sender, MouseEventArgs e)
{
// 如果鼠标左键被按下
if (e.Button == MouseButtons.Left)
{
// 计算新的Panel位置
Point newLocation = new Point(
panelContent.Left + (e.X - _dragStartPoint.X),
panelContent.Top + (e.Y - _dragStartPoint.Y)
);
// 设置Panel的新位置
panelContent.Location = newLocation;
}
}
private void Panel_MouseUp(object sender, MouseEventArgs e)
{
// 当鼠标释放时,重置偏移量
_dragStartPoint = Point.Empty;
}