如何使用 windows 形式删除文件 c#
How to delete file using windows form c#
我已经使用 imagelist
创建了 listview
并删除了 delete/remove 使用在列表视图中选择的文件名的文件的功能。
但是我得到了文件正在被另一个进程使用的错误。下面是我正在使用的代码:
//// 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()
但它没有用。
你的问题是这一行:
imgs.Images.Add(Image.FromFile(Files[i].FullName));
具体来说,Image.FromFile
正在创建一个非托管位图资源,该资源具有您的文件的打开句柄。
您将需要 Dispose
您为 imageList 创建的位图。
如果你有索引,你可以这样做:
imageList.Images[index].Dispose();
ImageList.Images.RemoveAt(index);
File.Delete(FileName);
我已经使用 imagelist
创建了 listview
并删除了 delete/remove 使用在列表视图中选择的文件名的文件的功能。
但是我得到了文件正在被另一个进程使用的错误。下面是我正在使用的代码:
//// 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()
但它没有用。
你的问题是这一行:
imgs.Images.Add(Image.FromFile(Files[i].FullName));
具体来说,Image.FromFile
正在创建一个非托管位图资源,该资源具有您的文件的打开句柄。
您将需要 Dispose
您为 imageList 创建的位图。
如果你有索引,你可以这样做:
imageList.Images[index].Dispose();
ImageList.Images.RemoveAt(index);
File.Delete(FileName);