C#-在ListView中';s大图标视图我无法正确更新图标

本文关键字:图标 视图 更新 ListView C#- | 更新日期: 2023-09-27 18:26:27

我使用ListView的大图标视图来查看每个插入的数据库插入图像。当进行新的插入时,我清除整个ListView,并使用以下代码添加所有插入。只有在第一次运行时,它才能完美工作。第二次(添加新插入后),我得到了所有的项目,但缺少图像(其中一些图像丢失,一些图像被打乱)

private void updateListView()
{
    myListView.Clear();
    myListView.Items.Clear();
    myConnection.connect();
    List<String> myValues = myConnection.getMyValues();
    List<String> myImages = myConnection.getMyImages();
    ImageList myImageList = new ImageList();
    myImageList.ImageSize = new Size(256, 256);
    myImageList.ColorDepth = ColorDepth.Depth32Bit;
    for (int i = 0; i < myValues.Count; i++)
    {
        myListView.Items.Add(myValues[i]);
        myListView.Items[i].ImageIndex = i;
        myImageList.Images.Add(Image.FromFile(myImages[i]));
    }
    myListView.LargeImageList = myImageList;
    myConnection.close();
    myListView.Refresh();
}

我已经通过调试进行了检查,并且值/文件路径是正确的。

C#-在ListView中';s大图标视图我无法正确更新图标

在添加新项之前,请先尝试关联myListView:

myListView.LargeImageList = myImageList; , 

然后添加项目。。。

myImageList.Images.Add(Image.FromFile(myImages[i])); 

还有什么是churchListView。。???你在哪里声明它…如果是,请替换代码示例以适合churchListView或适当的ListView变量。。。

我找到了它:问题是我在上有ListView的Sort属性。这意味着ListView会自动对其Items进行排序。因此,在这些行中:

myListView.Items.Add(myValues[i]);
myListView.Items[i].ImageIndex = i;

添加一个项目,然后将最后一个项目(i)附加到最后一个图像(i)在这两行之间,新添加的项目是按字母顺序自动排序的,因此它不是索引不再是i,而是其他内容。因此,图像被分配给一个随机项目。相反,我这样做了:

ListViewItem lastAddedListViewItem = myListView.Items.Add(myValues[i]);
lastAddedListViewItem.ImageIndex = i;

它在上运行