0

バックグラウンドワーカーでリストビューから選択したすべてのアイテムをループしようとして苦労しています。私はいくつかの調査を行い、これを見つけました。ListViewクロススレッドでアイテムを取得できませんしかし、選択したアイテムにのみ送信したいので、うまくいかないようです。誰かが私が何をすべきかについて例と説明を与えることができますか? これはすべて非常に新しく、混乱を招きます。

私が疲れたものの視覚的な例; ここに画像の説明を入力

4

2 に答える 2

1

あなたの関数は引数としてgetListViewItems期待ListViewしています。ListViewItemCollectionで呼び出そうとしているため、失敗します。

に変更するだけです

foreach(ListViewItem item in getListViewItems(listView2))
于 2013-02-27T09:03:57.913 に答える
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))
    {
        // ...
    }
}
于 2013-02-27T09:04:40.790 に答える