将图像列表添加到ListView?

时间:2016-09-04 14:46:30

标签: c# listview

我正在尝试创建一个应用程序,在他们的名字旁边显示我的skype联系人和他们的头像。但是,我似乎无法让头像显示

以下是应该将其添加到ListView的方法:

foreach (Tuple<User, string, string, string> a in list)
{
    imageList1.Images.Add(GetUserImage(a.Item1.Handle));
    listViewEx1.Items.Add(new ListViewItem(a.Item1.Handle, imageList1.Images.Count - 1)
    {
        SubItems = {a.Item1.FullName, a.Item2, a.Item4 }
    });
}

这是抓取图像的方法:

string app = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Skype\\Avatars\\";
public Bitmap GetUserImage(string SkypeID)
{
    if (Directory.Exists(app) == false)
    {
        Directory.CreateDirectory(app);
    }
    dynamic command0 = new SKYPE4COMLib.Command();
    command0.Command = string.Format("GET USER {0} AVATAR 1 {1}", SkypeID, app + SkypeID + ".jpg");
    s.SendCommand(command0);
    Thread.Sleep(100);
    return new Bitmap(app + SkypeID + ".jpg");
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

OP有点迟了但可能会帮助其他有类似症状的人:ImageList实例填充了图像和正确的密钥,ListView实例填充了具有正确{{1}的项目并且图片在ImageKey中正常工作,但PictureBox只是不会显示图片

原因似乎是设置ListViewSmallImageList执行某种复制而不是保留引用。如果您在之后更改了LargeImageList 的内容,则设置了ImageListSmallImageList,则更改将不会显示在LargeImageList中。

如果对其进行任何更改,答案是再次将ListView和/或SmallImageList设置为LargeImageList实例。

[NB我没有正确地完成这项工作;我刚刚发现这个答案解决了这个症状]