我正在尝试创建一个应用程序,在他们的名字旁边显示我的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");
}
我做错了什么?
答案 0 :(得分:0)
OP有点迟了但可能会帮助其他有类似症状的人:ImageList
实例填充了图像和正确的密钥,ListView
实例填充了具有正确{{1}的项目并且图片在ImageKey
中正常工作,但PictureBox
只是不会显示图片。
原因似乎是设置ListView
或SmallImageList
执行某种复制而不是保留引用。如果您在之后更改了LargeImageList
的内容,则设置了ImageList
或SmallImageList
,则更改将不会显示在LargeImageList
中。
如果对其进行任何更改,答案是再次将ListView
和/或SmallImageList
设置为LargeImageList
实例。
[NB我没有正确地完成这项工作;我刚刚发现这个答案解决了这个症状]