gpt4 book ai didi

c# - 当新图像添加到 ListView 时,以前的图像发生了变化

转载 作者:行者123 更新时间:2023-11-30 17:57:14 31 4
gpt4 key购买 nike

我对 ListView 很陌生。我正在尝试在 ListView 中显示图像。当我添加新项目时,所有以前的项目都会变成新项目。所以 ListView 具有相同的图像。我完成了谷歌搜索,但仍然找不到解决方案。请帮帮我。以下是我的代码。

ImageList imageList = new ImageList();

OpenFileDialog opend1 = new OpenFileDialog();

opend1.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";

opend1.Multiselect = true;

if (opend1.ShowDialog() == DialogResult.OK)
{

listView1.View = View.LargeIcon;

imageList.ImageSize = new Size(100, 100);

for (int c = 0; c < opend1.FileNames.Length; c++)
{

Image i = Image.FromFile(opend1.FileNames[c].ToString());

Image img = i.GetThumbnailImage(100, 100, null, new IntPtr());

imageList.Images.Add(img);

}

listView1.LargeImageList = imageList;

for (int j = 0; j < imageList.Images.Count; j++)
{

ListViewItem lstItem = new ListViewItem();

lstItem.ImageIndex = j;

listView1.Items.Add(lstItem);
}

listView1.Refresh();

}

最佳答案

当你在 WinForms 中使用 ListView 时,你应该将所有图像放在 ImageList 中, 并仅将该列表中的图像索引提供给您的 ListViewItems

listView1.LargeImageList = imageList1;
listView1.SmallImageList = imageList2;
listView1.Items.Add("Foo", 0);
listView1.Items.Add("Bar", 1);

创建和填充图像列表 ID 设计器非常简单。您也可以手动完成:

imageList1.Images.Add(fooImage); // will have index 0
imageList1.Images.Add(barImage); // will have index 1

更新 您的代码看起来不错。它是您应用程序中的确切代码吗?你只需要稍微简化一下:

listView1.View = View.LargeIcon;
imageList.ImageSize = new Size(100, 100);

foreach(var fileName in opend1.FileNames)
{
Image img = Image.FromFile(fileName);
imageList.Images.Add(img.GetThumbnailImage(100, 100, null, new IntPtr()));
}

listView1.LargeImageList = imageList;
for (int index = 0; index < imageList.Images.Count; index++)
listView1.Items.Add(new ListViewItem() { ImageIndex = index });

listView1.Refresh();

关于c# - 当新图像添加到 ListView 时,以前的图像发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376491/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com