C# listview 拖动节点
/// <summary> /// 当拖动某项时触发 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { listView1.DoDragDrop(e.Item, DragDropEffects.Move); } /// <summary> /// 鼠标拖动某项至该控件的区域 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listView1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Move; } /// <summary> /// 拖动时拖着某项置于某行上方时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listView1_DragOver(object sender, DragEventArgs e) { Point ptScreen = new Point(e.X, e.Y); Point pt = listView1.PointToClient(ptScreen); ListViewItem item = listView1.GetItemAt(pt.X, pt.Y); if (item != null) item.Selected = true; } /// <summary> /// 结束拖动 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listView1_DragDrop(object sender, DragEventArgs e) { ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));//旧目标 Point ptScreen = new Point(e.X, e.Y); Point pt = listView1.PointToClient(ptScreen); ListViewItem TargetItem = listView1.GetItemAt(pt.X, pt.Y);//新目标 if (null == TargetItem) { return; } if (MessageBoxEx.Show("[" + draggedItem.Text + "]转至[" + TargetItem.Text + "]", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { var item = draggedItem.Tag as View_TableListModel; int tableid = item.ID; } //listView1.Items.Insert(TargetItem.Index, (ListViewItem)draggedItem.Clone()); //listView1.Items.Remove(draggedItem); }