C# WinForm 中让panel 可以在WinForm 中移动

 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;
 }

  

posted @ 2024-06-19 11:02  LuoCore  阅读(3)  评论(0编辑  收藏  举报