在2个listview之间进行Drap和Drop [英] Drap and Drop between 2 listview

查看:67
本文介绍了在2个listview之间进行Drap和Drop的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有



private void lvSource_DragEnter(object sender,DragEventArgs e)

{

e。 Effect = DragDropEffects.Move;

}





private void lvSource_ItemDrag(object sender,ItemDragEventArgs e)< br $>
{

lvSource.DoDragDrop(lvSource.SelectedItems,DragDropEffects.Move);

}



private void lvSource_DragDrop(object sender,DragEventArgs e)

{

if(lvSource.SelectedItems.Count == 0){return; } $ / $


Point Pt = lvSource.PointToClient(new Point(eX,eY));

ListViewItem ItemDrag = lvSource.GetItemAt(Pt。 X,Pt.Y);



if(ItemDrag == null){return; }

int ItemDragIndex = ItemDrag.Index;



ListViewItem [] sel = new ListViewItem [lvSource.SelectedItems.Count];



for(int i = 0; i< lvSource.SelectedItems.Count; i ++)

{

sel [ i] = lvSource.SelectedItems [i];

}



for(int i = 0; i< sel.GetLength(0 ); i ++)

{

ListViewItem Item = sel [i];

int ItemIndex = ItemDragIndex;



if(ItemIndex == Item.Index){return; }



if(Item.Index< ItemIndex)

{

ItemIndex ++;

}

其他

{

ItemIndex = ItemDragIndex + 1;

}



ListViewItem InsertItem =(ListViewItem)Item.Clone();

lvSource.Items.Insert(ItemIndex,InsertItem);

lvSource.Items.Remove(Item);

}



}



private void lvDestination_DragEnter(object sender,DragEventArgs e)

{

e.Effect = DragDropEffects.Move;

}





private void lvDestination_DragDrop(object sender,DragEventArgs e)

{

if(lvDestination.SelectedItems.Count == 0){return; } $ / $


Point Pt = lvDestination.PointToClient(new Point(eX,eY));

ListViewItem ItemDrag = lvDestination.GetItemAt(Pt。 X,Pt.Y);



if(ItemDrag == null){return; }

int ItemDragIndex = ItemDrag.Index;



ListViewItem [] sel = new ListViewItem [lvDestination.SelectedItems.Count];



for(int i = 0; i< lvDestination.SelectedItems.Count; i ++)

{

sel [ i] = lvDestination.SelectedItems [i];

}



for(int i = 0; i< sel.GetLength(0 ); i ++)

{

ListViewItem Item = sel [i];

int ItemIndex = ItemDragIndex;



if(ItemIndex == Item.Index){return; }



if(Item.Index< ItemIndex)

{

ItemIndex ++;

}

其他

{

ItemIndex = ItemDragIndex + 1;

}



ListViewItem InsertItem =(ListViewItem)Item.Clone();

lvDestination.Items.Insert(ItemIndex,InsertItem);

lvDestination.Items.Remove(Item);

}

}



private void lvDestination_ItemDrag(object sender, ItemDragEventArgs e)

{

lvDestination.DoDragDrop(lvDestination.SelectedItems,DragDropEffects.Move);

}



private void SourceDestination_DrapDrop(object sender,DragEventArgs e)

{

// .. ...代码在这里

}



我想在两个listview之间拖放项目。谁可以帮助我?

解决方案

在粘贴代码之前咨询一些教程(没有格式化)怎么样?

看看这里:列表框之间的拖放 - 初学者教程 [ ^ ]

I have

private void lvSource_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}


private void lvSource_ItemDrag(object sender, ItemDragEventArgs e)
{
lvSource.DoDragDrop(lvSource.SelectedItems, DragDropEffects.Move);
}

private void lvSource_DragDrop(object sender, DragEventArgs e)
{
if(lvSource.SelectedItems.Count == 0) { return; }

Point Pt = lvSource.PointToClient(new Point(e.X, e.Y));
ListViewItem ItemDrag = lvSource.GetItemAt(Pt.X, Pt.Y);

if(ItemDrag==null) { return; }
int ItemDragIndex = ItemDrag.Index;

ListViewItem[] sel = new ListViewItem[lvSource.SelectedItems.Count];

for (int i = 0; i < lvSource.SelectedItems.Count; i++)
{
sel[i] = lvSource.SelectedItems[i];
}

for (int i = 0; i < sel.GetLength(0); i++)
{
ListViewItem Item = sel[i];
int ItemIndex = ItemDragIndex;

if(ItemIndex == Item.Index) { return; }

if(Item.Index < ItemIndex)
{
ItemIndex++;
}
else
{
ItemIndex = ItemDragIndex + 1;
}

ListViewItem InsertItem = (ListViewItem)Item.Clone();
lvSource.Items.Insert(ItemIndex, InsertItem);
lvSource.Items.Remove(Item);
}

}

private void lvDestination_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}


private void lvDestination_DragDrop(object sender, DragEventArgs e)
{
if (lvDestination.SelectedItems.Count == 0) { return; }

Point Pt = lvDestination.PointToClient(new Point(e.X, e.Y));
ListViewItem ItemDrag = lvDestination.GetItemAt(Pt.X, Pt.Y);

if (ItemDrag == null) { return; }
int ItemDragIndex = ItemDrag.Index;

ListViewItem[] sel = new ListViewItem[lvDestination.SelectedItems.Count];

for (int i = 0; i < lvDestination.SelectedItems.Count; i++)
{
sel[i] = lvDestination.SelectedItems[i];
}

for (int i = 0; i < sel.GetLength(0); i++)
{
ListViewItem Item = sel[i];
int ItemIndex = ItemDragIndex;

if (ItemIndex == Item.Index) { return; }

if (Item.Index < ItemIndex)
{
ItemIndex++;
}
else
{
ItemIndex = ItemDragIndex + 1;
}

ListViewItem InsertItem = (ListViewItem)Item.Clone();
lvDestination.Items.Insert(ItemIndex, InsertItem);
lvDestination.Items.Remove(Item);
}
}

private void lvDestination_ItemDrag(object sender, ItemDragEventArgs e)
{
lvDestination.DoDragDrop(lvDestination.SelectedItems, DragDropEffects.Move);
}

private void SourceDestination_DrapDrop(object sender, DragEventArgs e)
{
//..... Code Here
}

I want to drag and drop items between two listview. Who can help me?

解决方案

What about consulting some tutorial before pasting code (without formatting)?
Have a look here: Drag and Drop between list boxes - Beginner's Tutorial[^]


这篇关于在2个listview之间进行Drap和Drop的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆