我在类中的backgroundWorker中添加/更改listview项 添加/编辑listview项目没有问题。 问题是在第一个循环中第一个项目图片被添加了两次,所以每个项目图片在第一个项目之后被一个项目关闭,它的问题是我做错了调用的东西,我用Google搜索并尝试其他方法做它,但似乎也发生了同样的事情。
WinForm中的函数
public void _ListViewEditRow(int index, string item_title, params string[] subitem_titles)
{
this.Invoke(new MethodInvoker(delegate {
listView.EditRow(index, item_title, subitem_titles); }));
}
public void _ListViewAddImage(int index, string imgName)
{
this.Invoke(new MethodInvoker(delegate
{
if (imgName != null && File.Exists(imgName))
{
imlSmallIcons.Images.Add(Image.FromFile(imgName));
//imlLargeIcons.Images.Add(Image.FromFile(imgName));
}
this.Invalidate();
}));
}
BackgroundWorker的
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(delegate (object o, DoWorkEventArgs args)
{
gIndex = -1;
foreach (Item gItem in items.Values)
{
gIndex++;
_receiver._ListViewEditRow(gIndex, gItem.name, gItem.url);
string ImageName = @"_cache\" + gItem.name + ".png";
if (!File.Exists(ImageName))
WebClient.DownloadFile(@gItem.url, ImageName);
_receiver._ListViewAddImage(gIndex, ImageName);
}
Thread.Sleep(3000);
}
});
bw.RunWorkerAsync();