循环遍历后台工作者中选定的listview项目

时间:2013-02-27 08:55:29

标签: c# listview

我很难尝试在后台工作程序中遍历listview中的所有选定项目。我做了一些研究,发现了这个; Can't get items in a ListView cross-thread但它似乎不起作用,因为我只想发送到所选项目,有人可以举例说明我应该做什么吗?这都是非常新的和令人困惑的。

我累了的视觉例子; enter image description here

2 个答案:

答案 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))
    {
        // ...
    }
}