private void listView1_ItemDrag(Object sender, ItemDragEventArgs e) { listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Move); } private void pictureBox1_DragEnter(Object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Copy; } } private void pictureBox1_DragDrop(Object sender, DragEventArgs e) { Point clientPoint = pictureBox1.PointToClient(new Point(e.X, e.Y)); int index = GetInsertionIndex(clientPoint); 将数据添加到索引处的图片框中 } private int GetInsertionIndex(Point clientPoint) { 根据客户端点和用户选择确定索引 返回指数; }代码我想实现鼠标点击的位置就是他要拖拽的位置
时间: 2023-05-15 14:05:35 浏览: 146
自定义ListView实现拖拽ListItem项交换位置(附源码)
这段代码实现了拖拽功能,当用户在 listView1 中选择一个或多个项并开始拖动时,会调用 listView1_ItemDrag 方法,将所选项的数据放入拖放数据中。当用户将数据拖动到 pictureBox1 中时,会调用 pictureBox1_DragEnter 方法,判断拖放数据中是否包含文件,并设置拖放效果为复制。当用户在 pictureBox1 中释放鼠标时,会调用 pictureBox1_DragDrop 方法,获取鼠标释放点的位置,并根据该位置确定要插入的索引,最后将数据添加到该索引处的图片框中。
如果你想实现鼠标点击的位置就是拖拽位置,可以在 listView1_ItemDrag 方法中获取鼠标点击点的位置,并将该位置作为拖拽数据的起始位置,然后在 pictureBox1_DragDrop 方法中获取鼠标释放点的位置,并根据起始位置和释放位置计算出要插入的索引。
阅读全文