如何实现将listview上的数据拖拽到picturebox上时可以选择拖拽的位置,比如说拖拽到上次拖拽数据的前面或后面,代码该如何实现
时间: 2023-05-12 20:06:17 浏览: 77
WPF 拖拽的实现(以listview为例)
4星 · 用户满意度95%
您可以使用DragEnter和DragDrop事件来实现这个功能。在DragEnter事件中,您可以检查拖动的数据是否是您想要的类型,并设置允许拖放的效果。在DragDrop事件中,您可以获取拖动的数据并将其插入到listview中的适当位置。
以下是示例代码:
private void listView1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(string)))
{
e.Effect = DragDropEffects.Move;
}
}
private void listView1_DragDrop(object sender, DragEventArgs e)
{
Point point = listView1.PointToClient(new Point(e.X, e.Y));
ListViewItem targetItem = listView1.GetItemAt(point.X, point.Y);
int targetIndex = targetItem != null ? targetItem.Index : listView1.Items.Count;
string draggedItem = (string)e.Data.GetData(typeof(string));
listView1.Items.Insert(targetIndex, draggedItem);
}
在这个示例中,我们假设拖动的数据是一个字符串。在DragEnter事件中,我们检查数据是否是字符串类型,并设置允许拖放的效果为Move。在DragDrop事件中,我们获取拖动的数据并将其插入到listview中的适当位置。我们使用PointToClient方法将拖动的坐标转换为listview中的坐标,并使用GetItemAt方法获取目标项。如果目标项为null,则我们将拖动的数据插入到listview的末尾。否则,我们将拖动的数据插入到目标项的前面。
希望这可以帮助您实现您的需求。
阅读全文