将listview中的值比如说111,拖拽到picturebox中显示出来后,继续拖拽listview的值222,使其可以选择放置的位置,即鼠标按下时在已经放置的数据111的前面,222就显示在111的前面,如果鼠标按下时在111的后面,222就显示在111的后面,picturebox_DragDrop代码该如何实现
时间: 2023-05-14 15:07:24 浏览: 94
WPF 拖拽的实现(以listview为例)
4星 · 用户满意度95%
您可以使用以下代码实现该功能:
private void pictureBox_DragDrop(object sender, DragEventArgs e)
{
int newIndex = -1;
Point point = pictureBox.PointToClient(new Point(e.X, e.Y));
for (int i = 0; i < pictureBox.Controls.Count; i++)
{
if (pictureBox.Controls[i].Bounds.Contains(point))
{
newIndex = i;
break;
}
}
if (newIndex == -1)
{
newIndex = pictureBox.Controls.Count;
}
Control control = (Control)e.Data.GetData(typeof(Control));
pictureBox.Controls.Remove(control);
pictureBox.Controls.Add(control);
pictureBox.Controls.SetChildIndex(control, newIndex);
}
在这个代码中,我们首先将鼠标的位置转换为相对于picturebox的坐标,然后遍历picturebox中的所有控件,找到鼠标所在的位置,并计算出新的控件索引。最后,我们将拖拽的控件从picturebox中移除,并按照新的索引重新添加到picturebox中。这样,就可以实现拖拽listview的值到picturebox中,并根据鼠标位置选择放置的位置的功能。
阅读全文