listview 和Imagelist一起使用显示图片的问题

wulin900515 2012-03-09 12:08:25

string pathstr = null;
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string str = comboBox1.Text;
switch (str)
{
case "图片":
pathstr = Directory.GetCurrentDirectory() + @"\wulin";
break;
case "背景":
pathstr = Directory.GetCurrentDirectory() + @"\beijing";
break;
default:
pathstr = Directory.GetCurrentDirectory() + @"\default";
break;
}
}
imageList1.ColorDepth = ColorDepth.Depth32Bit;
imageList1.ImageSize = new Size(220, 220);
for (int i = 0; i < 4; i++)
{
imageList1.Images.Add(Image.FromFile(Application.StartupPath+@"\\beijing\\" + (i + 1).ToString() + ".jpg"));
listView1.LargeImageList = imageList1;
listView1.Items.Add((i + 1).ToString());
listView1.Items[i].ImageIndex = i;
}



我想通过单击combobox中的某一项让其在ListView控件中显示相应文件夹中的图片而且这个图片要足够的大,起码可以看见图片是什么样的吧(如果只设置其View=LargeIcon属性自能显示文字,而图片却并没有显示,但是当你再次选择其他选项时,以前的图片还在那里,新加的图片在其后面显示,这样listView中图片就越来越多)所以想到用ImageList控件设置imageList1.ImageSize = new Size(220, 220);是可以显示了但发现如下问题

下面网上找到的实现Imagelist的代码

p rivate void button1_Click(object sender, EventArgs e)
{
imageList1.ColorDepth = ColorDepth.Depth24Bit;
imageList1.ImageSize = new Size(120, 120);
for (int i = 0; i < 12; i++)
{
imageList1.Images.Add(Image.FromFile(Application.StartupPath + "\\"+(i+1).ToString()+".jpg"));
listView1.LargeImageList = imageList1;
listView1.Items.Add((i+1).ToString());
listView1.Items[i].ImageIndex = i;
}
}

但是不能实现自动查找ImageList图片的个数如Imagelist1.Image.Count,而且查找文件还要指定文件名才能查找

...全文
234 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wulin900515 2012-03-09
  • 打赏
  • 举报
回复
listView1.Items.Clear();
wulin900515 2012-03-09
  • 打赏
  • 举报
回复
继续更新

private void Filefind(DirectoryInfo dir, string Filenames)
{
FileInfo[] files = dir.GetFiles(Filenames);
if (files.Length != 0)
{
int i = 0;
imageList1.ColorDepth = ColorDepth.Depth24Bit;
foreach (FileInfo afile in files)
{
listView1.Items.Add(afile.Name,i);
imageList1.Images.Add(Image.FromFile(afile.FullName));
i++;
}

}
}


可以显示图片了 还有最后一个问题就是当你再次选择其他选项时,以前的图片还在那里,新加的图片在其后面显示,这样listView中图片就越来越多

如何把以前的几率消掉呢
wulin900515 2012-03-09
  • 打赏
  • 举报
回复

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string str = comboBox1.Text;
string pathstr = null;
switch (str)
{
case "图片":
pathstr = Directory.GetCurrentDirectory() + @"\wulin";
break;
case "背景":
pathstr = Directory.GetCurrentDirectory() + @"\default";
break;
default:
pathstr = Directory.GetCurrentDirectory() + @"\default";
break;
}
DirectoryInfo dircombo = new DirectoryInfo(pathstr);
Filefind(dircombo, "*.jpg");
}

private void Filefind(DirectoryInfo dir, string Filenames)
{
FileInfo[] files = dir.GetFiles(Filenames);
if (files.Length != 0)
{
imageList1.ColorDepth = ColorDepth.Depth24Bit;
foreach (FileInfo afile in files)
{
ListViewItem lvi;
string s = afile.Name;
lvi = new ListViewItem(s);
listView1.Items.Add(lvi);
imageList1.Images.Add(Image.FromFile(afile.FullName));
}

}
}


经过努力终于可以显示图片了 上面是实现代码,但有个问题是这些图片只显示图片名,不显示图像,看着一片空白,而且当你再次选择其他选项时,以前的图片还在那里,新加的图片在其后面显示,这样listView中图片就越来越多

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧