ListView コントロールの単一の項目であるListView.SelectedListViewItemCollection
から、リスト (またはコレクション) を取得する理由がわかりません。ListViewItem
から選択されたアイテムのリストを取得するという逆のことが必要なようですListView.SelectedListViewItemCollection
。あれは正しいですか?もしそうなら、それを達成できる1つの方法はどこにありますか。
オブジェクトのリストがあるUser
場合、リストビューは次のように入力できます。
listview.BeginUpdate();
foreach (User u in userList)
{
ListViewItem item = new ListViewItem() { Text = u.Name, Tag = u};
listview.Items.Add(item);
}
listview.EndUpdate();
ここで、 はオブジェクトuserList
の型付きリストです。その後、ListView で選択した項目を取得できます。User
List<User>
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;
}
これが役立つことを願っています。幸運を!