C# .NET Listview复制项目
有没有一种方法可以将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 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());
AListViewItem
不能同时存在于多个列表视图中。它们需要重新创建
但是您可以使用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()
的结果是对象。我所做的更改应该可以解决这个问题(强制将强制转换为列表视图项
)。