要避免listview C#.NET中的重复图像吗

要避免listview C#.NET中的重复图像吗,c#,listview,duplicates,imagelist,C#,Listview,Duplicates,Imagelist,我第一次使用带有listview组件的imagelist,我想要的是列出图像。我面临的问题是,在将图像再次添加到listview时,无法避免重复图像。请看下面的代码,让我知道哪里出了问题 OpenFileDialog addImages = new OpenFileDialog(); addImages.Filter = "JPEG (*.jpg)|*.jpg"; addImages.Multiselect = true; if (addImage

我第一次使用带有listview组件的imagelist,我想要的是列出图像。我面临的问题是,在将图像再次添加到listview时,无法避免重复图像。请看下面的代码,让我知道哪里出了问题

OpenFileDialog addImages = new OpenFileDialog();
        addImages.Filter = "JPEG (*.jpg)|*.jpg";
        addImages.Multiselect = true;
        if (addImages.ShowDialog(this) == DialogResult.OK)
        {
            foreach (string filename in addImages.FileNames)
            {
                try
                {
                    if (this.imageList1.Images.ContainsKey(filename) == false)
                    {
                        this.imageList1.Images.Add(filename, Image.FromFile(filename));
                    }
                }
                catch{}
            }
            this.listView1.View = View.LargeIcon;
            this.listView1.LargeImageList = this.imageList1;

            for (int i = 0; i < this.imageList1.Images.Count; i++)
            {
                if (this.listView1.Items.ContainsKey(this.imageList1.Images.Keys[i]) == false)
                {
                    ListViewItem li = new ListViewItem();
                    li.ImageIndex = i;
                    li.ImageKey = this.imageList1.Images.Keys[i];
                    li.Text = Path.GetFileName(this.imageList1.Images.Keys[i]);
                    this.listView1.Items.Add(li);
                }
            }
        }
OpenFileDialog addImages=newopenfiledialog();
addImages.Filter=“JPEG(*.jpg)|*.jpg”;
addImages.Multiselect=true;
if(addImages.ShowDialog(此)=DialogResult.OK)
{
foreach(addImages.FileNames中的字符串文件名)
{
尝试
{
if(this.imageList1.Images.ContainsKey(文件名)=false)
{
this.imageList1.Images.Add(文件名,Image.FromFile(文件名));
}
}
捕获{}
}
this.listView1.View=View.LargeIcon;
this.listView1.LargeImageList=this.imageList1;
for(int i=0;i
我不完全理解你的问题,但有几件事你可以做

  • 在for循环之前的函数中添加一个
    this.listView1.Items.Clear()
    。下次打开OpenFileDialog时,您将向空的listview添加项

  • 在每个LiveViewItem标记中添加文件名
    li.Tag=…文件路径…
    。然后每次向listView添加一个新项时,只需检查它是否已经包含带有该标记的项

  • 您使用函数“ContainsKey”进行复制

    this.listView1.Items.ContainsKey()
    
    说:“Name属性对应于ListView.ListViewItemCollection中ListViewItem的键。”

    因此,您需要设置ListViewItem的名称