gpt4 book ai didi

c# - 无法删除 ListView 中显示的图像文件

转载 作者:太空狗 更新时间:2023-10-30 00:46:38 26 4
gpt4 key购买 nike

在我的 ListView 中,我显示了某个文件夹中小图像的缩略图。我按如下方式设置 ListView :

var imageList = new ImageList();
foreach (var fileInfo in dir.GetFiles())
{
try
{
var image = Image.FromFile(fileInfo.FullName);
imageList.Images.Add(image);
}
catch
{
Console.WriteLine("error");
}
}

listView.View = View.LargeIcon;
imageList.ImageSize = new Size(64, 64);
listView.LargeImageList = imageList;

for (int j = 0; j < imageList.Images.Count; j++)
{
var item = new ListViewItem {ImageIndex = j, Text = "blabla"};
listView.Items.Add(item);
}

用户可以右键单击 ListView 中的图像将其删除。我将其从 ListView 中删除,然后我想从文件夹中删除该图像。现在我收到文件正在使用中的错误。当然这是合乎逻辑的,因为图像列表正在使用该文件。

我尝试先从图像列表中删除图像,但我一直锁定文件。

谁能告诉我我做错了什么?

谢谢!

最佳答案

您需要将文件加载到 MemoryStream 中,如下所示:

var image = Image.FromStream(new MemoryStream(File.ReadAllBytes(fileInfo.FullName)));

这样文件只会被读取一次,不会保持锁定状态。

编辑

您正在将图像加载到 ImageList 中。
由于 ImageList 会复制其图像,因此您应该立即简单地处理原件,如下所示:

using (var image = Image.FromFile(fileInfo.FullName))
imageList.Images.Add(image);

关于c# - 无法删除 ListView 中显示的图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2686062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com