2010-07-22 67 views
1

有没有办法复制从一个控件到另一个ListView的全部内容,而无需手动设置第二个,并通过每个项目迭代?我想是这样的:.NET列表视图复制项目

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 

回答

5

一个ListViewItem不能同时在一个以上的列表视图存在。他们需要重新创建。

但是你可以使用LINQ做这个快速。

myNewListView.Items.AddRange(
    lvwExistingView.Items.Cast<ListViewItem>().Select(i => 
     i.Clone()).Cast<ListViewItem>().ToArray()); 
+0

我得到以下编译错误,当我试试这个: 参数“1”:无法从“对象[]”转变为“System.Windows.Forms.ListViewItem []” – 2010-07-22 09:08:11

+0

对不起,忘结果'Clone()'是一个'object'。我所做的改变应该解决这个问题(强制'Cast'到'ListViewItem')。 – Codesleuth 2010-07-22 09:54:11