.NET列表视图复制项目
问题描述:
有没有办法复制从一个控件到另一个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
答
一个ListViewItem
不能同时在一个以上的列表视图存在。他们需要重新创建。
但是你可以使用LINQ做这个快速。
myNewListView.Items.AddRange(
lvwExistingView.Items.Cast<ListViewItem>().Select(i =>
i.Clone()).Cast<ListViewItem>().ToArray());
我得到以下编译错误,当我试试这个: 参数“1”:无法从“对象[]”转变为“System.Windows.Forms.ListViewItem []” – 2010-07-22 09:08:11
对不起,忘结果'Clone()'是一个'object'。我所做的改变应该解决这个问题(强制'Cast'到'ListViewItem')。 – Codesleuth 2010-07-22 09:54:11