バックグラウンドワーカーでリストビューから選択したすべてのアイテムをループしようとして苦労しています。私はいくつかの調査を行い、これを見つけました。ListViewクロススレッドでアイテムを取得できませんしかし、選択したアイテムにのみ送信したいので、うまくいかないようです。誰かが私が何をすべきかについて例と説明を与えることができますか? これはすべて非常に新しく、混乱を招きます。
私が疲れたものの視覚的な例;
バックグラウンドワーカーでリストビューから選択したすべてのアイテムをループしようとして苦労しています。私はいくつかの調査を行い、これを見つけました。ListViewクロススレッドでアイテムを取得できませんしかし、選択したアイテムにのみ送信したいので、うまくいかないようです。誰かが私が何をすべきかについて例と説明を与えることができますか? これはすべて非常に新しく、混乱を招きます。
私が疲れたものの視覚的な例;
あなたの関数は引数としてgetListViewItems
期待ListView
しています。ListViewItemCollectionで呼び出そうとしているため、失敗します。
に変更するだけです
foreach(ListViewItem item in getListViewItems(listView2))
次のように関数を定義します。
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))
{
// ...
}
}