我正在使用 ListView 加载和显示图像文件的缩略图。我为每个 ListViewItem 使用的“名称”或键是完全限定的文件名。
我还创建了一个 ImageList,它使用相同的键加载这些文件的缩略图。我已将此 ImageList 分配为 ListView 的“SmallImageList”属性。
当我添加和删除文件时,我会从 ListView.Items 和 ImageList.Images 集合中按键添加和删除它们。
在加载许多图像时,所有这些都可以正常工作。但是,当我尝试删除给定键时,ListView 控件不再正确显示缩略图。
删除项目之前和之后:
当我在调试期间分析内存中的两个集合数组时,键完美排列。
使用的代码:
// Add the images from an array of paths
foreach (string xFile in files)
{
thumbnails_imageList.Images.Add(xFile, images[xFile]);
files_lst.Items.Add(xFile, Path.GetFileNameWithoutExtension(xFile), xFile);
}
// Delete the selected key(s)
foreach (ListViewItem xItem in files_lst.SelectedItems)
{
files_lst.Items.Remove(xItem);
thumbnails_imageList.Images.RemoveByKey(xItem.Name);
}