ListView内部值的交换移动
来源:互联网 发布:网络直播招聘深圳 编辑:程序博客网 时间:2024/05/16 17:02
支持LargeIcon、SmallIcon、Tile
#region ListView内部值的交换
private void listView6_ItemDrag(object sender, ItemDragEventArgs e)
{
listView6.DoDragDrop(e.Item, DragDropEffects.Move);
}
private void listView6_DragEnter(object sender, DragEventArgs e)
{
e.Effect = e.AllowedEffect;
}
private void listView6_DragLeave(object sender, EventArgs e)
{
listView6.InsertionMark.Index = -1;
}
private void listView6_DragOver(object sender, DragEventArgs e)
{
Point targetPoint = listView6.PointToClient(new Point(e.X, e.Y));
int targetIndex = listView6.InsertionMark.NearestIndex(targetPoint);
if (targetIndex > -1)
{
Rectangle itemBounds = listView6.GetItemRect(targetIndex);
if (targetPoint.X > itemBounds.Left + 10
&& targetPoint.X < itemBounds.Left + itemBounds.Width - 20
&& targetPoint.Y > itemBounds.Top + 10
&& targetPoint.Y < itemBounds.Top + itemBounds.Height - 20)
{
listView6.Items[targetIndex].BackColor = Color.Red;
//设置预期放置位置
listView6.InsertionMark.Index = targetIndex;
}
else
{
foreach (ListViewItem item in listView6.Items)
{
item.BackColor = Color.White;
}
}
}
else
{
foreach (ListViewItem item in listView6.Items)
{
item.BackColor = Color.White;
}
}
}
private void listView6_DragDrop(object sender, DragEventArgs e)
{
int targetIndex = listView6.InsertionMark.Index;
if (targetIndex == -1) { return; }
ListViewItem draggedItme = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
string message = "是否要将“" + draggedItme.Text + "”移至“" + listView6.Items[targetIndex].Text + "”";
if (MessageBox.Show(message, "警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
string temp = "";
int imgIndex = 0;
//更换图标
imgIndex = listView6.Items[targetIndex].ImageIndex;
listView6.Items[targetIndex].ImageIndex = draggedItme.ImageIndex;
listView6.SelectedItems[0].ImageIndex = imgIndex;
//更换子项值
for (int i = 1; i < listView6.Items[targetIndex].SubItems.Count; i++)
{
temp = listView6.Items[targetIndex].SubItems[i].Text;
listView6.Items[targetIndex].SubItems[i].Text = draggedItme.SubItems[i].Text;
listView6.SelectedItems[0].SubItems[i].Text = temp;
}
}
//重置背景色
foreach (ListViewItem item in listView6.Items)
{
if (item.Index % 2 == 0) { item.BackColor = System.Drawing.Color.PaleGreen; }
else { item.BackColor = new Color(); }
}
listView6.InsertionMark.Index = -1;
}
#endregion
- ListView内部值的交换移动
- 移动的交换网络分类
- 线程的交换与移动
- Android动态更改ListView的内部控件的值
- ListView进行平滑的移动
- ListView.SelectedIndexChanged事件的内部机理
- listview刷新与内部控件的监听
- ListView内部控件的点击事件
- Android 实现ListView 内部的点击事件
- listview 内部按钮的点击事件
- listview的item内部有Button问题
- android 动态生成listview的内部布局
- 交换机内部交换方式
- ios 利用runtime 机制 交换系统内部方法的实现
- Android DragAndDrop API 拖拽效果 交换ListView的Item值
- 移动软交换技术
- 移动、交换SELECT内容
- 移动交换中心 msc
- Java 理论与实践: 正确使用 Volatile 变量
- 记事本打开并粘贴指定数据
- 性能调试--CPU性能分析
- C# 使用LINQ访问数据库
- 从PL/SQL FAQ中摘抄出来几篇比较有用的文章
- ListView内部值的交换移动
- Windows Shell编程网摘
- BCB5里如何让程序暂停几秒
- 学习心得之linux内核篇
- gcc 4.7.0 x86_64 specs
- 如何在C++ Builder程序中运行数据库Sql脚本,建Sql Server 2000数据库。
- ARPSender by Refdom代码
- 大小写转换
- 关于SendKeys使用时为什么发送回车键时没反应的分析