zoukankan      html  css  js  c++  java
  • c# Winform Listview的Details模式时拖动Items排序的实现。

    本部分代码参考与网络文章,部分代码转自网络,感谢提供思路的作者。

        /// <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);//拖动的项将放置于该项之前    
                listView1.Items.Insert(TargetItem.Index, (ListViewItem)draggedItem.Clone());           
                listView1.Items.Remove(draggedItem);
            }

    ////////////////////////////////
    ////////Sixi. Let it be.../////
    //////////////////////////////

  • 相关阅读:
    多进程 与并发
    socket之 udp用法 dns 多道 进程
    粘包
    socket tcp
    数据集特点
    secureCRT
    算法
    auto-encoder小记
    pytorch dataloader num_workers
    CNN试验记录
  • 原文地址:https://www.cnblogs.com/sixiweb/p/2081481.html
Copyright © 2011-2022 走看看