C#Listview拖放行

Mik*_*ike 7 c# listview drag-and-drop

我正在尝试使用listview实现C#拖放行重新排序,然后列表视图将使用当前行的顺序更新SQL数据库.我在互联网上遇到了一些代码片段(一个来自这个实现'var'类的网站),但似乎没有一个符合我的需求.我不需要帮助更新数据库,因为我很清楚如何做到这一点,但似乎无法使行重新排序正常工作,任何输入都将不胜感激.

-谢谢

Mat*_*nes 15

  1. 确保AllowDragDrop设置为true.

2至少为这3个事件实现处理程序

private void myList_ItemDrag(object sender, ItemDragEventArgs e)
    {
        DoDragDrop(e.Item, DragDropEffects.Link);
    }

    private void myList_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.Link;
    }

    private void myList_DragDrop(object sender, DragEventArgs e)
    {
        // do whatever you need to reorder the list.
    }
Run Code Online (Sandbox Code Playgroud)

获取您放入的行的索引可能看起来像

Point cp = myList.PointToClient(new Point(e.X, e.Y));
ListViewItem dragToItem = myList.GetItemAt(cp.X, cp.Y);
int dropIndex = dragToItem.Index;
Run Code Online (Sandbox Code Playgroud)