我不确定你为什么要从一个 ListView 控件中的单个项目 a 中获取一个列表(或集合),这就是 aListView.SelectedListViewItemCollection
是ListViewItem
什么?似乎您想要相反的情况,即从ListView.SelectedListViewItemCollection
. 那是对的吗?如果是这样,您可以在哪里实现这一目标。
鉴于您有一个User
对象列表,您的列表视图可以这样填充:
listview.BeginUpdate();
foreach (User u in userList)
{
ListViewItem item = new ListViewItem() { Text = u.Name, Tag = u};
listview.Items.Add(item);
}
listview.EndUpdate();
其中userList
是一个类型化的User
对象列表,即List<User>
. 然后您可以在 ListView 中获取所选项目:
ListViewItem[] collection = GetSelectedItems(listview);
List<string> names = new List<string>();
Parallel.ForEach(collection, item =>
{
User u = item.Tag as User;
names.Add(u.Name);
});
private static ListViewItem[] GetSelectedItems(ListView listView)
{
ListViewItem[] selectedItems = new ListViewItem[0];
MethodInvoker miGetSelectedItems = delegate
{
selectedItems = new ListViewItem[listview.SelectedItems.Count];
listview.SelectedItems.CopyTo(selectedItems, 0);
};
if (listview.InvokeRequired)
{
listview.Invoke(miGetSelectedItems);
}
else
{
miGetSelectedItems();
}
return selectedItems;
}
我希望这将有所帮助。祝你好运!