C#关于ListView控件在列表视图中拖动视图项功能应用
2012-07-01 08:02
387 查看
private void
listView1_ItemDrag(object sender, ItemDragEventArgs e)
{//起动拖放放操作,设置拖放类型,为
listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Move);
}
//选返要拖动的项
private void
listView1_DragEnter(object sender, DragEventArgs e)
{//获取ListView类型数据
for (int i = 0; i <= e.Data.GetFormats().Length - 1; i++)
{
if(e.Data.GetFormats()[i].Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection"))
{
e.Effect = 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[i] = listView1.SelectedItems[i];
}
for (int i = 0; i < sel.GetLength(0); i++)
{
ListViewItem dragItem = sel[i];
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);
}
}
listView1_ItemDrag(object sender, ItemDragEventArgs e)
{//起动拖放放操作,设置拖放类型,为
listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Move);
}
//选返要拖动的项
private void
listView1_DragEnter(object sender, DragEventArgs e)
{//获取ListView类型数据
for (int i = 0; i <= e.Data.GetFormats().Length - 1; i++)
{
if(e.Data.GetFormats()[i].Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection"))
{
e.Effect = 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[i] = listView1.SelectedItems[i];
}
for (int i = 0; i < sel.GetLength(0); i++)
{
ListViewItem dragItem = sel[i];
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);
}
}
相关文章推荐
- C#关于ListView控件连接数据库功能应用
- C#|Winform编程之(列表视图控件)listView控件
- 【C#版本详情回顾】C#2.0主要功能列表
- 关于聚享赚这个App玩家试玩某应用5分钟发放奖励的功能实现
- C# 列表视图
- 关于C#asp上传下载功能代码
- Test@python关于列表及字典的应用_(2)
- LWIP[转]关于TCP保活功能及其应用
- 【C#版本详情回顾】C#2.0主要功能列表
- C#语言实现创建、删除和移动文件夹及其文件夹列表功能
- C#开发微信门户及应用(4)--关注用户列表及详细信息管理
- 关于开发Android应用时写从图库选择头像功能时遇到的一些问题。
- c#:拖动功能
- 关于C#/.NET中委托和事件的机制和应用的故事(转)
- C#第六周--关于正则表达式应用,delegates关键字
- C#开发微信门户及应用(30)--消息的群发处理和预览功能
- C#实现简单的拖动功能
- 功能: 正则表达式应用验证登录(C#学习日记 2017-09-22)
- 【转】一起谈.NET技术,关于c#静态方法和实例方法的辨析和应用
- 关于sql视图--定义视图的查询不能包含order by子句,除非在select 语句的选择列表中还有top子句---问题解决