2011-11-26 5 views
3

Как добавить изображение вместо текста для подтипа listview? Мне нравится http://i44.tinypic.com/2mzz6s6.png?Изображения в элементе списка ListView

здесь, как правило, как добавить строку:

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

Я использую .NET 2.0 с WinForms. Кроме того, пожалуйста, не связывайте меня со статьями с превосходными элементами управления listview .NET. Я хочу придерживаться стандартного в MSVC.

ответ

10

Если вам нужен значок, чтобы быть в первой колонке, то это можно легко сделать путем создания ImageList с изображениями, которые вы хотите отобразить, присваивая его свойству SmallImageListListView и устанавливая для него значение 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, вы также должны присвоить 'ImageList' (' YourImageList' в приведенном выше примере) свойство 'LargeImageList'' ListView'. –

-2

В WPF, вы можете сделать это легко,

В форме Windows, вы можете прочитать

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

как ваш образец.

Основная идея

Во-первых, установите ListBox в OwnerDraw

Затем в itemdraw случае (или это DrawItem?) Захватить изображение и сделать его в пространстве, отведенном (е. Graphics.DrawImage), затем провести испытание пункта рядом с ним (e.Graphics.DrawString)

+0

Вы должны прочитать код ImageListBox и написать свой собственный. NoWay для вас показывает изображение в вашем ListBox без настройки ListBox (WinForm) –

+1

Quiestion - это 'ListView', а не' ListBox'. –

Смежные вопросы