拖放位置?如何使用矩形?WinForms,C#

拖放位置?如何使用矩形?WinForms,C#,c#,winforms,drag-and-drop,C#,Winforms,Drag And Drop,winform中的拖放操作返回其拖放操作中最左上方的拖放操作。或者,为了清楚起见,它会将鼠标光标放在哪里。我知道我必须添加一些代码,比如矩形。但是我在这个拖放功能上是新手。有人能帮我吗?这是我的密码: private void label1_MouseDown(object sender, MouseEventArgs e) { label1.DoDragDrop(label1, DragDropEffects.Move); } private void panel

winform中的拖放操作返回其拖放操作中最左上方的拖放操作。或者,为了清楚起见,它会将鼠标光标放在哪里。我知道我必须添加一些代码,比如矩形。但是我在这个拖放功能上是新手。有人能帮我吗?这是我的密码:

private void label1_MouseDown(object sender, MouseEventArgs e)
{
   label1.DoDragDrop(label1, DragDropEffects.Move);           
}

private void panel1_DragDrop(object sender, DragEventArgs e)
{
   label1.Location = this.panel1.PointToClient(new Point(e.X, e.Y));
}

private void panel1_DragEnter(object sender, DragEventArgs e)
{
   e.Effect = DragDropEffects.Move;
}

它位于左上角,因为
label1.Location=this.panel1.PointToClient(新点(e.X,e.Y))设置左上角的位置。尝试获取鼠标相对于拖动项目的位置并减去这些坐标

private void panel1_DragDrop(object sender, DragEventArgs e)
{
   //Gives you the position of the mouse relative to the top left of panel1
   point offset = e.GetPosition(panel1); 
   label1.Location = this.panel1.PointToClient(new Point(e.X-offset.X, e.Y-offset.Y));
}

现在还不清楚我们想要实现什么,你能解释一下吗?是的,问题是什么?例如,我瞄准标签中间的拖拽,它把光标所在的标签掉到最上面。我理解那部分,但是你想让它做什么呢?它应该去哪里?你希望不会发生什么?让我在标签中间点击它,然后拖动,在删除之后,我希望鼠标的光标仍然在标签的中间,而不是在标签的最左边。