0

我将在图像列表和列表视图中加载 10 张图像。然后稍后,我想替换前 5 个(列表中的前 5 个)。但是新图像总是添加到显示列表的底部。

    Initialize_ListView()
    for (int i = 0; i < 10; i++) 
        {
           AddItemTo_ListView(i);
        }

Now I later use this code to replace the top 5
   for (int i = 0; i < 5; i++) 
        {
           ImageAndThumb imgObj = new ImageAndThumb(output);
           Replace(imgObj , i)
        }


   private void Initialize_ListView()
    {
        this.imageList1.Images.Clear();
        this.listView1.Clear();
        this.listView1.View = View.SmallIcon;
        this.imageList1.ImageSize = new Size(75, 80);
        this.listView1.SmallImageList = this.imageList1;
    }

    private void AddItemTo_ListView(int index)
    {
        ImageAndThumb imgObj = new ImageAndThumb(output);
        ImageAndThumbLst.Add(imgObj);

         this.imageList1.Images.Add(ImageAndThumbLst[index].Thumb);

        ListViewItem item = new ListViewItem();
        item.ImageIndex = index;
        this.listView1.Items.Add(item);
    }


    private void Replace(ImageAndThumb obj, int indx)
    {
        ImageAndThumbLst[indx] = obj;          
        this.imageList1.Images[indx] = ImageAndThumbLst[indx].Thumb;
        ListViewItem item = new ListViewItem();
        item.ImageIndex = indx;           
        this.listView1.Items[indx]=item;      
    }
4

1 回答 1

0

对于任何犯同样错误的人,我在他的替换功能中创建了一个新项目,这是不必要的。新的替换功能应该是这样的

private void Replace(ImageAndThumb obj, int indx)
{
    ImageAndThumbLst[indx] = obj;          
    this.imageList1.Images[indx] = ImageAndThumbLst[indx].Thumb;       
     listView1.Refresh();   
}
于 2013-07-03T04:44:57.110 回答