C#关于ListView控件在列表视图中拖动视图项功能应用

private void listView1_ItemDrag(object sender, ItemDragEventArgs e)

{//起动拖放放操作,设置拖放类型,为

listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Move);

}

//选返要拖动的项

private void listView1_DragEnter(object sender, DragEventArgs e)

{//获取ListView类型数据

for (int i = 0; i <= e.Data.GetFormats().Length - 1; i++)

{

if(e.Data.GetFormats()[i].Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection"))

{

e.Effect = DragDropEffects.Move;

}

}

}

private void listView1_DragDrop(object sender, DragEventArgs e)

{

//判断是否选择拖放的项,

if (listView1.SelectedItems.Count == 0)

{

return;

}

//定义项的坐标点

Point cp = listView1.PointToClient(new Point(e.X, e.Y));//

ListViewItem dragToItem = listView1.GetItemAt(cp.X, cp.Y);

if (dragToItem == null)

{

return;

}

int dragIndex = dragToItem.Index;

ListViewItem[] sel = new ListViewItem[listView1.SelectedItems.Count];

for (int i = 0; i <= listView1.SelectedItems.Count - 1; i++)

{

sel[i] = listView1.SelectedItems[i];

}

for (int i = 0; i < sel.GetLength(0); i++)

{

ListViewItem dragItem = sel[i];

int itemIndex = dragIndex;

if (itemIndex == dragItem.Index)

{

return;

}

if (dragItem.Index < itemIndex)

itemIndex++;

else

itemIndex = dragIndex + i;

ListViewItem insertItem = (ListViewItem)dragItem.Clone();

listView1.Items.Insert(itemIndex, insertItem);

listView1.Items.Remove(dragItem);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值