2016-09-04 3 views
0

Я пытаюсь сделать приложение, которое отображает мои контакты в Skype с их аватаром рядом с их именем. Тем не менее, я не могу показаться, чтобы получить аватар, чтобы показатьДобавить Imagelist в ListView?

Ниже приведен метод, который, как предполагается, чтобы добавить его в 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

Убедитесь, что вид в списке listview поддерживает список изображений, также задайте listview.Imagelist вам imagelist и убедитесь, что эти изображения не пусты или null. Я не знал, что у них есть компьютеры в whiterun, хотя должно быть какое-то двемерское дерьмо. – null

+0

Предполагая, что изображения загружаются нормально: вы установили 'imageList1' как' listViewEx1.LargeImageList'? - Также: сделайте себе одолжение и добавьте 'SkypeID' или имя изображения в качестве свойства' Key' (1-й параметр в перегрузке 'Add'), чтобы вы могли получить доступ к изображениям лучше! – TaW

ответ

0

Немного поздно для OP, но может помочь другим с подобными симптомами: экземпляр ImageList заполняется с изображениями и правильными ключами, экземпляр ListView заполняется с пунктами с правильной ImageKey и изображения прекрасно работают в PictureBox, но ListView только не отображает изображения.

Причина заключается в том, что установка SmallImageList или LargeImageList выполняет некоторую копию, а не содержит ссылку. Если вы измените содержимое ImageListпосле, вы установили SmallImageList или LargeImageList, изменения не будут отображаться в вашем ListView.

Ответ на вопрос: установить SmallImageList и/или LargeImageList на экземпляр ImageList, если вы внесете в него какие-либо изменения.

[NB Я не работал должным образом по причине; Я только что нашел, что этот ответ решает этот симптом]

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