0

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

1 回答 1

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));
}
于 2014-12-10T22:12:28.513 回答