0
我试着去实现ListViewItems
的DragDrop
重新整理我的名单。C#ListView控件的DragDrop重新排序不能正常工作
列表不会按照我的预期重新排序或移动项目。
代码
private void lstModules_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(ListViewItem)))
{
lstModules.Alignment = ListViewAlignment.Default;
if (lstModules.SelectedItems.Count == 0)
return;
var p = lstModules.PointToClient(new System.Drawing.Point(e.X, e.Y));
ListViewItem MovetoNewPosition = lstModules.GetItemAt(p.X, p.Y);
if (MovetoNewPosition == null)
return;
ListViewItem DropToNewPosition = (e.Data.GetData(typeof(ListView.SelectedListViewItemCollection)) as ListView.SelectedListViewItemCollection)[0];
ListViewItem CloneToNew = (ListViewItem)DropToNewPosition.Clone();
int index = MovetoNewPosition.Index;
lstModules.Items.Remove(DropToNewPosition);
lstModules.Items.Insert(index, CloneToNew);
lstModules.Alignment = ListViewAlignment.SnapToGrid;
}
}
private void lstModules_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection)))
{
e.Effect = DragDropEffects.Move;
}
}
private void lstModules_ItemDrag(object sender, ItemDragEventArgs e)
{
lstModules.DoDragDrop(lstModules.SelectedItems, DragDropEffects.Move);
}