【发布时间】:2014-03-02 21:43:07
【问题描述】:
我正在尝试实现ListViewItems 的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);
}
【问题讨论】:
标签: c# winforms listview drag-and-drop