winform中使用listview控件(拖动item子项)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ListviewDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
          
           


            listView1.Columns.Add("", 50, HorizontalAlignment.Left);
            listView1.Columns.Add("", 50, HorizontalAlignment.Left);
            listView1.Columns.Add("", 50, HorizontalAlignment.Left);

            //listView1.Items.Add(new ListViewItem(new string[] { "张三", "13岁", "五班" }));
            //listView1.Items.Add(new ListViewItem(new string[] { "李四", "14岁", "六班" }));
            //listView1.Items.Add(new ListViewItem(new string[] { "王五", "15岁", "七班" }));
            listView1.Items.Add(new ListViewItem(new string[] { "张一", "13岁", "一班" }));
            listView1.Items.Add(new ListViewItem(new string[] { "网二", "14岁", "二班" }));
            listView1.Items.Add(new ListViewItem(new string[] { "李四", "15岁", "三班" }));
            listView1.Items.Add(new ListViewItem(new string[] { "孙五", "16岁", "四班" }));
            listView1.Items.Add(new ListViewItem(new string[] { "刘六", "17岁", "五班" }));
            listView1.Items.Add(new ListViewItem(new string[] { "齐七", "18岁", "六班" }));

           // listView1.Items.Insert(5, new ListViewItem(new string[] { "老八", "19岁", "七班" }));
        }
        /// <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);//拖动的项将放置于该项之前   
            if (null == TargetItem)
                return;

            listView1.Items.Insert(TargetItem.Index, (ListViewItem)draggedItem.Clone());
            listView1.Items.Remove(draggedItem);
			 #region ceshi
            int my_first_chance = draggedItem.Index;
            int my_second_chance = TargetItem.Index;
            ListViewItem my_temp = TargetItem;

            listView1.Items.Insert(my_second_chance, (ListViewItem)draggedItem.Clone());
            listView1.Items.Remove(TargetItem);
            listView1.Items.Insert(my_first_chance, (ListViewItem)my_temp.Clone());
            listView1.Items.Remove(draggedItem);
            #endregion
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int my_count = listView1.Items.Count;
            Console.WriteLine(my_count);
            listView1.Items.Insert(listView1.Items.Count, new ListViewItem(new string[] { "老八", "19岁", "七班" }));
        }
    }
}

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值