private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { ListViewItem item = (ListViewItem)e.Item; string itemName = item.Text; listView1.DoDragDrop(itemName, DragDropEffects.Copy); }将listview中的值比如说111,拖拽到picturebox中显示出来后,继续拖拽listview的值222,使其可以选择放置的位置,即鼠标按下时在已经放置的数据111的前面,222就显示在111的前面,如果鼠标按下时在111的后面,222就显示在111的后面,在指定位置比如说鼠标按下的位置和已有数据的位置来判断插入到哪里并且显示代码该如何实现
时间: 2023-05-16 21:04:24 浏览: 81
【计算机专业-Andorid项目源码100套之】ListView中的item随意拖动
可以使用以下代码实现:
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
string itemName = (string)e.Data.GetData(typeof(string));
// 在picturebox中显示itemName
// 获取鼠标按下的位置
Point mousePosition = pictureBox1.PointToClient(new Point(e.X, e.Y));
// 获取已有数据的位置
int index = -1;
for (int i = 0; i < listView1.Items.Count; i++)
{
ListViewItem item = listView1.Items[i];
if (item.Text == itemName)
{
index = i;
break;
}
}
// 判断插入到哪里
if (index == -1)
{
// 如果没有已有数据,直接添加到末尾
listView1.Items.Add(itemName);
}
else
{
// 根据鼠标按下的位置判断插入到哪里
ListViewItem item = listView1.GetItemAt(mousePosition.X, mousePosition.Y);
if (item == null)
{
// 如果鼠标按下的位置在已有数据的后面,插入到该数据的后面
listView1.Items.Insert(index + 1, itemName);
}
else
{
// 如果鼠标按下的位置在已有数据的前面,插入到该数据的前面
listView1.Items.Insert(index, itemName);
}
}
}
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
ListViewItem item = (ListViewItem)e.Item;
string itemName = item.Text;
listView1.DoDragDrop(itemName, DragDropEffects.Copy);
}
阅读全文