Search code examples
c#listviewlistviewitem

C# add an image (instead of text) to ListViewItem


I'm dynamically updating a ListView like that:

ListViewItem item = new ListViewItem();
item.Text = "Text1";
item.SubItems.Add("Text2");
item.SubItems.Add("Text3");
item.SubItems.Add("Text4");
item.Tag = i;
listView.Items.Add(item);

now I want that instead of Text4 will be a lil icon I will get dynamically from a url. I read a lot of threads and tried many things - but I can't get this to work..


Solution

  • You need to implement ImageList in your function. Code :

    // get picture resource
    WebClient _web = new WebClient();
    byte[] _data = _wb.DownloadData("http://www.myzony.com/usr/uploads/2017/03/3197402477.png");
    MemoryStream _ms = new MemoryStream(_data);
    // Loaded to imagelist
    ImageList list = new ImageList();
    list.Images.Add("pic1",Image.FromStream(_ms));
    // bind listview
    listView1.SmallImageList = list;
    
    ListViewItem _item1 = new ListViewItem();
    _item1.Text = "Test";
    _item1.SubItems.Add("Test2");
    _item1.SubItems.Add("pic1");
    _item1.ImageKey = "pic1";
    listView1.Items.Add(_item1);
    

    Effect Image: enter image description here