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

时间:2013-05-28 16:50:36

标签: c# winforms drag-and-drop

在winform中拖放返回其Drop上最左上角的丢弃。或者说清楚,它会落在鼠标光标所在的位置。我知道我必须添加一些代码,如矩形。但我在这个拖放功能新。有人可以帮我吗?这是我的代码:

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

1 个答案:

答案 0 :(得分:1)

位于左上方,因为label1.Location = this.panel1.PointToClient(new Point(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));
}