C#ListView详解(三)

来源:互联网 发布:流体力学模拟软件 编辑:程序博客网 时间:2024/06/05 23:04

了解ListView的成员和简单demo请查看详解一和详解二
Demo3:
拖放ListVIewItem实现重新排序
注意拖放的事件发生顺序(讲解一)
Code:

        private void btnDemo3_Click(object sender, EventArgs e)        {            lvContainer.BeginUpdate();            lvContainer.Clear();            //如果不设置为View.List则会导致ListView.Items.Insert函数插入的ListViewItem在最后一项            lvContainer.View = View.List;            //必须设置为true            lvContainer.AllowDrop = true;            lvContainer.SmallImageList = imageListSource;            for (int i = 0; i < 10; i++)            {                ListViewItem item = new ListViewItem();                item.ImageIndex = 0;                item.Text = i.ToString();                lvContainer.Items.Add(item);            }            lvContainer.EndUpdate();        }        //开始拖放项        private void lvContainer_ItemDrag(object sender, ItemDragEventArgs e)        {            //继承Control的函数,当调用此函数后,DragDrop事件完成后,才会执行之后的代码            lvContainer.DoDragDrop(e.Item, DragDropEffects.Copy);        }        private void lvContainer_DragEnter(object sender, DragEventArgs e)        {            e.Effect = e.AllowedEffect;        }        private void lvContainer_DragDrop(object sender, DragEventArgs e)        {            int nearestItemIndex = lvContainer.InsertionMark.NearestIndex(lvContainer.PointToClient(new Point(e.X, e.Y)));            ListViewItem item = (ListViewItem)e.Data.GetData(typeof(ListViewItem));            lvContainer.Items.Insert(nearestItemIndex, (ListViewItem)item.Clone());            lvContainer.Items.Remove(item);        }
Effect Picture:![这里写图片描述](http://img.blog.csdn.net/20170723080724205?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ194dWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

Demo4:
两个ListView之间进行ListViewItem拖放效果
Code

//进行数据加载        private void ListItemDragDropDemo_Load(object sender, EventArgs e)        {            //设置源ListView            lvSource.LargeImageList = iList;            lvSource.View = View.LargeIcon;            lvSource.AllowDrop = true;            for (int i = 0; i < 10; i++)            {                ListViewItem item = new ListViewItem();                item.ImageIndex = 0;                item.Text = i.ToString();                lvSource.Items.Add(item);                item.Tag = (i + 10).ToString();            }            //设置目标ListView            lvDestination.LargeImageList = iList;            lvDestination.View = View.LargeIcon;            lvDestination.AllowDrop = true;        }        private void lvSource_ItemDrag(object sender, ItemDragEventArgs e)        {            lvSource.DoDragDrop(e.Item, DragDropEffects.Copy);        }        private void lvSource_DragEnter(object sender, DragEventArgs e)        {            e.Effect = e.AllowedEffect;        }        private void lvDestination_DragEnter(object sender, DragEventArgs e)        {            e.Effect = e.AllowedEffect;        }        private void lvDestination_DragDrop(object sender, DragEventArgs e)        {           ListViewItem item=(ListViewItem)e.Data.GetData(typeof(ListViewItem));            //由于不需要进行重新排序,所以进行Item增加即可,View不采用List           lvDestination.Items.Add((ListViewItem)item.Clone());           lvSource.Items.Remove(item);        }
Effect Pictrue![这里写图片描述](http://img.blog.csdn.net/20170723081617782?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ194dWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
原创粉丝点击