ListView子项中的图像

问题描述:

如何为listview子项添加图像而不是文本?像http://i44.tinypic.com/2mzz6s6.pngListView子项中的图像

这里通常是我如何添加一个字符串:

ListViewItem item = new ListViewItem("A"); 
item.SubItems.Add("B"); 
item.SubItems.Add("C"); 
listView1.Items.AddRange(new ListViewItem[] { item }); 

我使用.NET 2.0的WinForms。另外,请不要将我链接到具有高级.NET listview控件的文章。我想坚持MSVC中的标准。

如果你需要的图标是在第一列,那么它可以很容易地通过创建一个完成ImageList带有要显示的图像,将其分配给ListViewSmallImageList属性,并为该项目设置适当的ImageIndex。像这样:

listView1.SmallImageList = YourImageList; 
ListViewItem lvi = new ListViewItem(); 
lvi.SubItems.Add("A"); 
lvi.SubItems.Add("B"); 
lvi.SubItems.Add("C"); 
lvi.ImageIndex = 2; // this will display YourImageList.Images[2] in the first column 
listView1.Items.Add(lvi); 
+0

谢谢。非常优雅的解决方案。 – david

+0

@ pseudonym27,如果你想让图标以'LargeIcons'模式显示,你还应该在'ListView'的'LargeImageList'属性中分配一个'ImageList'(上面例子中的'YourImageList')。 –

在WPF中,你可以做到这一点很容易,

在Windows窗体,你可以阅读

http://www.codeproject.com/KB/combobox/imagelistbox.aspx

为您的样品。

主要思想是

首先,设置你的列表框中的OwnerDraw

然后,在itemdraw事件(或者是DRAWITEM?)抓住你的图像和分配的空间绘制(如Graphics.DrawImage),然后绘制项目的测试旁边(e.Graphics.DrawString

+0

您应该阅读ImageListBox的代码并编写自己的代码。 NoWay for you在你的列表框中显示图像,而无需自定义你的列表框(WinForm) –

+1

静止是关于'ListView'而不是'ListBox'。 –