C# - 在ListView的大图标视图中,我无法正确更新图标

时间:2012-03-01 23:17:17

标签: c# listview icons

我正在使用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();
}

我已经使用debug检查过,值/文件路径是正确的。

2 个答案:

答案 0 :(得分:0)

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

myListView.LargeImageList = myImageList; , 

然后添加项目......

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

什么是churchListView .. ???你在哪里声明它...如果是这样替换代码示例以适合churchListView或适当的ListView变量......

答案 1 :(得分:0)

我找到了: 问题是我有ListView的Sort属性。 这意味着ListView会自动对其项目进行排序。 所以在这些方面:

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

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

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

它有效