我很难尝试在后台工作程序中遍历listview中的所有选定项目。我做了一些研究,发现了这个; Can't get items in a ListView cross-thread但它似乎不起作用,因为我只想发送到所选项目,有人可以举例说明我应该做什么吗?这都是非常新的和令人困惑的。
我累了的视觉例子;
答案 0 :(得分:1)
您的函数getListViewItems
期望ListView
作为参数。您试图使用ListViewItemCollection调用它,这就是失败的原因。
只需将其修改为
即可foreach(ListViewItem item in getListViewItems(listView2))
答案 1 :(得分:0)
定义这样的函数:
public static List<ListViewItem> GetSelectedListViewItems(ListView lv)
{
if (!lv.InvokeRequired)
return lv.SelectedItems.Cast<ListViewItem>().ToList();
else
return (List<ListViewItem>)lv.Invoke(
new Func<ListView, List<ListViewItem>>(GetSelectedListViewItems),
lv);
}
用法:
private void SendMSG_DoWork(object sender, DoWorkEventArgs e)
{
foreach (var item in GetListViewSelectedItems(listView2))
{
// ...
}
}