在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;
}
答案 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));
}