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.../////
    //////////////////////////////

  • 相关阅读:
    Kafka 再均衡监听器示例
    Spring boot中异步线程池
    【Java&Go并发编程系列】4.等待一组并发任务完成——CountDownLatch VS sync.WaitGroup
    Redis常用命令对应到Redisson对象操作
    js清空缓存,ajax
    phpexcel用法 转、
    composer 使用
    转:git操作
    手机微信内支付
    微信扫码支付
  • 原文地址:https://www.cnblogs.com/sixiweb/p/2081481.html
Copyright © 2011-2022 走看看