首先需要设置listview的AllowDrop为true,允许拖拽操作 ,具体代码如下:
/// <summary>
/// 初始化加载/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void JTest_Load(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
ListViewItem _ListViewItem = new ListViewItem();
_ListViewItem.Text = string.Format("A_{0}", i);
listView1.Items.Add(_ListViewItem);
}
}
private void listView1_DragDrop(object sender, DragEventArgs e)
{
ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
Point _Point = new Point(e.X, e.Y);
Point pt = listView1.PointToClient(_Point);
ListViewItem _ListViewItem = listView1.GetItemAt(pt.X, pt.Y);
if (_ListViewItem == null) { listView1.Items.Add((ListViewItem)draggedItem.Clone()); }
else { listView1.Items.Insert(_ListViewItem.Index, (ListViewItem)draggedItem.Clone()); }
listView1.Items.Remove(draggedItem);
}
private void listView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
ListViewItem draggedItem = (ListViewItem)e.Item;
listView1.DoDragDrop(e.Item, DragDropEffects.Move);
listView1.Items.Remove(draggedItem);
}
private void listView2_DragDrop(object sender, DragEventArgs e)
{
ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
Point _Point = new Point(e.X, e.Y);
Point pt = this.listView2.PointToClient(_Point);
ListViewItem lv = this.listView2.GetItemAt(pt.X, pt.Y);
if (lv == null) { listView2.Items.Add((ListViewItem)draggedItem.Clone()); }
else { listView2.Items.Insert(lv.Index, (ListViewItem)draggedItem.Clone()); }
listView2.Items.Remove(draggedItem);
}
private void listView2_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void listView2_ItemDrag(object sender, ItemDragEventArgs e)
{
ListViewItem draggedItem = (ListViewItem)e.Item;
listView2.DoDragDrop(e.Item, DragDropEffects.Move);
listView2.Items.Remove(draggedItem);
}