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

  • 相关阅读:
    MySQL5.7.19 服务挂掉 自动关闭 mysqld got exception 0xc000001d win 2008R2
    intellij IDEA VS(Visual Studio) 常用 高效 黄金 快捷键
    .Net MVC Cache 缓存技术总结
    HttpContext.Current.Cache 过期时间
    Sql Server 数据类型与 C# 数据类型对照
    Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope
    Hibernate注解映射联合主键的三种主要方式
    hibernate 查询全部数据的三种方法
    Springframework和Hibernate版本对应关系
    C# 反射总结 获取 命名空间 类名 方法名
  • 原文地址:https://www.cnblogs.com/sixiweb/p/2081481.html
Copyright © 2011-2022 走看看