• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
智美手机APP
国内最专业的智能手机APP应用解决方案提供商。智美手机APP为您提供成熟稳定的专业化产品、产品定制等服务。
博客园    首页    新随笔    联系   管理    订阅  订阅

winForm ListView控件内部拖动排序

 
        private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
        {
            listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Move);
        }

        private void listView1_DragDrop(object sender, DragEventArgs e)
        {
            //判断是否选择拖放的项,

            if (listView1.SelectedItems.Count == 0)
            {
                return;
            }

            //定义项的坐标点
            Point cp = listView1.PointToClient(new Point(e.X, e.Y));//
            ListViewItem dragToItem = listView1.GetItemAt(cp.X, cp.Y);

            if (dragToItem == null)
            {
                return;
            }

            int dragIndex = dragToItem.Index;
            ListViewItem[] sel = new ListViewItem[listView1.SelectedItems.Count];

            for (int i = 0; i <= listView1.SelectedItems.Count - 1; i++)
            {
                sel = listView1.SelectedItems;
            }

            for (int i = 0; i < sel.GetLength(0); i++)
            {
                ListViewItem dragItem = sel;

                int itemIndex = dragIndex;

                if (itemIndex == dragItem.Index)
                {
                    return;
                }

                if (dragItem.Index < itemIndex)
                    itemIndex++;
                else
                    itemIndex = dragIndex + i;

                ListViewItem insertItem = (ListViewItem)dragItem.Clone();

                listView1.Items.Insert(itemIndex, insertItem);

                listView1.Items.Remove(dragItem);
            }
        }
        private void listView1_DragEnter(object sender, DragEventArgs e)
        {
            for (int i = 0; i <= e.Data.GetFormats().Length - 1; i++)
            {
                if (e.Data.GetFormats().Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection"))
                {
                    e.Effect = DragDropEffects.Move;
                }

            }


        }
posted @ 2012-07-17 11:42  小敏博客园  阅读(3136)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3