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)
阅读全文
0 0
- C#ListView详解(三)
- ListView 详解(三)
- ListView详解之三
- ListView详解之三
- C#ListView详解(一)
- C#ListView详解(二)
- Android ListView详解(三)
- listview详解
- ListView 详解
- ListView详解
- ListView详解
- ListView详解
- ListView详解
- listView详解
- ListView详解
- ListView详解
- ListView详解
- Listview详解
- Ural1519 Formula 1 插头dp入门
- Feescale K60开发笔记16: k60 bootloader应用程序的配置
- Laravel学习之旅(1)
- linux中日志的管理
- STL中的set容器的一点总结
- C#ListView详解(三)
- 常用
- Android开发文章推荐
- C++ const关键字
- 学习LCD
- 欢迎使用CSDN-markdown编辑器
- C++ 动态内存分配
- Hibernate教程(2)-增删改查
- C++ 函数缺省参数