Есть несколько способов.
Если вы хотите скопировать элементы из a в b:
private static void CopySelectedItems(ListView source, ListView target)
{
foreach (ListViewItem item in source.SelectedItems)
{
target.Items.Add((ListViewItem)item.Clone());
}
}
Если вы хотите переместить элементы из a в b:
private static void MoveSelectedItems(ListView source, ListView target)
{
while (source.SelectedItems.Count > 0)
{
ListViewItem temp = source.SelectedItems[0];
source.Items.Remove(temp);
target.Items.Add(temp);
}
}
Обновление
Вы упоминаете, что хотите сохранить порядок, в котором элементы расположены в элементе управления ListView
. Я предполагаю, что они появляются там в каком-то отсортированном порядке? Если это так, вы можете создать функцию, которая использует то же правило сортировки, чтобы выяснить, куда вставить элемент в цель ListView
(в моем примере используется значение во втором столбце:
private static void CopySelectedItems(ListView source, ListView target)
{
foreach (ListViewItem item in source.SelectedItems)
{
ListViewItem clone = (ListViewItem)item.Clone();
target.Items.Insert(GetInsertPosition(clone, target), clone); ;
}
}
private static int GetInsertPosition(ListViewItem item, ListView target)
{
const int compareColumn = 1;
foreach (ListViewItem targetItem in target.Items)
{
if (targetItem.SubItems[compareColumn].Text.CompareTo(item.SubItems[compareColumn].Text) > 0)
{
return targetItem.Index;
}
}
return target.Items.Count;
}
Трудно дать более точный ответ, не зная более подробной информации.