【发布时间】:2019-04-02 03:26:23
【问题描述】:
我创建了listview 和imagelist 和删除函数,该函数将使用在列表视图中选择的文件名删除/删除文件。
但我收到文件正被另一个进程使用的错误消息。以下是我正在使用的代码:
//// Listview with Imagelist
private void listImages()
{
imageList.View = View.Details;
imageList.Columns.Add("Images", 650);
ImageList imgs = new ImageList();
imgs.ImageSize = new Size(200, 130);
DirectoryInfo d = new DirectoryInfo(adsFolder);
FileInfo[] Files = {};
try
{
Files = d.GetFiles("*");
for (var i = 0; i < Files.Count(); i++)
{
imgs.Images.Add(Image.FromFile(Files[i].FullName));
imageList.Items.Add(Files[i].Name, i);
}
imageList.SmallImageList = imgs;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
//// Delete function
private void deleteFile_Click(object sender, EventArgs e)
{
using (FileStream stream = new FileStream("Selected Image"), FileMode.Open, FileAccess.Read))
{
stream.Dispose();
}
File.Delete("Selected Image");
}
我发现imagelist 导致错误,因为图像列在图像列表中。当我删除 imagelist 它工作正常。但是我想在我的listview 上保留imagelist。如何停止或清除imagelist,使其不再使用所选图像,以便我可以继续删除所选文件?我尝试使用imagelist.clear(),但没有成功。
【问题讨论】:
-
两种方法:在将图像添加到 ImageList 之前克隆图像或在删除之前处理 Bitmap。在第二种情况下,位图文件将在被引用时被锁定。在第一种情况下,永远不会。
using (FileStream stream (...)很难理解。 -
1) 当您对同一一次性使用
using块时,无需调用Dispose。 2)如果您只是要在删除回调中删除文件,为什么还要费心阅读文件?
标签: c# winforms delete-file imagelist