C# .NET Listview复制项目

C# .NET Listview复制项目,c#,.net,listview,C#,.net,Listview,有没有一种方法可以将listview的全部内容从一个控件复制到另一个控件,而无需手动设置第二个控件并遍历每个项?我的想法是: ListView myNewListView = new ListView(); lvwExistingView.CopyTo(myNewListView); 甚至: ListView myNewListView = new ListView(); lvwExistingView.Items.CopyTo(myNewListView.Items, 1); // This

有没有一种方法可以将listview的全部内容从一个控件复制到另一个控件,而无需手动设置第二个控件并遍历每个项?我的想法是:

ListView myNewListView = new ListView();
lvwExistingView.CopyTo(myNewListView);
甚至:

ListView myNewListView = new ListView();
lvwExistingView.Items.CopyTo(myNewListView.Items, 1); // This doesn't work because it expects an array

ListViewItem
不能同时存在于多个列表视图中。它们需要重新创建

但是您可以使用LINQ来快速实现这一点

myNewListView.Items.AddRange(
    lvwExistingView.Items.Cast<ListViewItem>().Select(i => 
        i.Clone()).Cast<ListViewItem>().ToArray());
myNewListView.Items.AddRange(
lvwExistingView.Items.Cast().Select(i=>
i、 克隆()).Cast().ToArray());

A
ListViewItem
不能同时存在于多个列表视图中。它们需要重新创建

但是您可以使用LINQ来快速实现这一点

myNewListView.Items.AddRange(
    lvwExistingView.Items.Cast<ListViewItem>().Select(i => 
        i.Clone()).Cast<ListViewItem>().ToArray());
myNewListView.Items.AddRange(
lvwExistingView.Items.Cast().Select(i=>
i、 克隆()).Cast().ToArray());

尝试此操作时,我遇到以下编译错误:参数“1”:无法从“object[]”转换为“System.Windows.Forms.ListViewItem[]”抱歉,忘记了克隆的结果()是一个
对象。我所做的更改应该可以解决这个问题(强制将
Cast
转换为
ListViewItem
)。我尝试此操作时出现以下编译错误:参数“1”:无法从“object[]”转换为“System.Windows.Forms.ListViewItem[]”抱歉,忘记了
Clone()
的结果是
对象。我所做的更改应该可以解决这个问题(强制将
强制转换为
列表视图项
)。