我正在使用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检查过,值/文件路径是正确的。
答案 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;
它有效