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

  • 相关阅读:
    POJ2142:The Balance——题解
    POJ1061:青蛙的约会——题解
    接口测试结束后的小结
    接口测试结束后的小结
    如何进行需求测试/需求评审
    如何进行需求测试/需求评审
    测试人员掌握代码的重要性
    测试人员掌握代码的重要性
    测试人员掌握代码的重要性
    软件自动化测试开发-开班啦
  • 原文地址:https://www.cnblogs.com/sixiweb/p/2081481.html
Copyright © 2011-2022 走看看