【问题标题】:How to delete file using windows form c# [duplicate]如何使用windows form c#删除文件[重复]
【发布时间】:2019-04-02 03:26:23
【问题描述】:

我创建了listviewimagelist 和删除函数,该函数将使用在列表视图中选择的文件名删除/删除文件。

但我收到文件正被另一个进程使用的错误消息。以下是我正在使用的代码:

//// 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


【解决方案1】:

你的问题是这一行:

imgs.Images.Add(Image.FromFile(Files[i].FullName));

具体来说,Image.FromFile 正在创建一个非托管位图资源,该资源具有您的文件的打开句柄。

您需要 Dispose 为您的 imageList 创建的位图。

如果你有索引,你可以这样做:

imageList.Images[index].Dispose();
ImageList.Images.RemoveAt(index);
File.Delete(FileName);

【讨论】:

  • 我使用了imageList.Dispose();,但它不起作用。我也尝试过使用ImageList.RemoveAt(index);,但错误提示 ImageList 不包含RemoveAt
  • @richard 您不想处置图像列表,您需要处置其中的项目。请检查文档,我也更新了我的答案
猜你喜欢
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 2020-03-20
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
相关资源
最近更新 更多