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();
}
我已经通过调试进行了检查,并且值/文件路径是正确的。
在添加新项之前,请先尝试关联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;
它在上运行