Всем здравствуйте, подскажите как отобразить иконку в Listview. У меня есть класс,в котором я получаю данные для отображения,есть сама форма, иконку саму я получаю, но не отображается и все тут. Благодарен за помощь
// сам класс где создаются данные для отображения.
public class Controller
{
public List<info> PrintKeys(string rkey)
{
List<info> stroka=new List<info>();
bool F = true;
bool G = true;
String rp = rkey;
RegistryKey rk;
using (rk = Registry.LocalMachine.OpenSubKey(rp))
{
var e = rk.GetValueNames().Select(n => new
{
Name = n,
Value = rk.GetValue(n),
Exec = rk.GetValue(n).ToString()
.Split('"').Where(i => !String.IsNullOrEmpty(i)).First()
});
foreach (var x in e)
{
var icon1 = Icon.ExtractAssociatedIcon(x.Exec).ToBitmap();
stroka.Add(new info() { A = icon1, F1 = F,G1 = G,Namefile1 = x.Name, Path1 = x.Value});
}
}
return stroka;
}
}
//вот класс самой формы
public partial class Form1 : Form
{
Controller c=new Controller();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
string r1 = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; // реестр local mashin
string r2 = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; //реестр СCurren user
string rp3 = @".DEFAULT\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; //реестр user
List<info> a = c.PrintKeys(r1);
for (int i = 0; i < a.Count; i++)
{
listView1.Items.Add(a[i].Namefile1);
listView1.Items[i].SubItems.Add((string) a[i].Path1);
listView1.Items[i].SubItems.Add(a[i].F1.ToString());
listView1.Items[i].SubItems.Add(a[i].G1.ToString());
// и вот тут не работает, свойство А хранит в себе уже битмаповскую иконку
listView1.Items[i].ImageList.Images.Add(a[i].A);
}
}
}
//И сам класс для данных
public class info
{
public Bitmap A { get; set; } // иконка файла
public string Namefile1 { get; set; } //Имя исполняемого файла.
//public string C1 { get; private set; } //Параметры командной строки для запуска файла.
public object Path1 { get; set; }// путь
public bool F1 { get; set; }//Флаг наличия цифровой подписи.
public bool G1 { get; set; }//Флаг корректности цифровой подписи
public info() { }
}
Вы не указываете значение свойства ListViewItem.ImageIndex или ListViewItem.ImageKey, обратите внимание на тот факт, что эти свойства взаимоисключающие, т.е. если явно указано одно - второе будет сброшено в значение по-умолчанию (-1 или "" соответственно).
Измените немного логику заполнения ListView. Например так:
//Перед циклом создадим новый список изображений.
//По умолчанию они отсутствуют в ListView
var imList = new ImageList();
listView.LargeImageList = imList;
listView.SmallImageList = imList;
for (int i = 0; i < a.Count; i++)
{
listView1.Items.Add(a[i].Namefile1);
listView1.Items[i].SubItems.Add((string) a[i].Path1);
listView1.Items[i].SubItems.Add(a[i].F1.ToString());
listView1.Items[i].SubItems.Add(a[i].G1.ToString());
//добавляем изображение с ключом в список
imList.Images.Add(key: a[i].Namefile1, image: a[i].A);
//указываем ключ для отображения картинки
listView1.Items[i].ImageKey = a[i].Namefile1;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В сети есть много примеров реализации паттерна Dispose применительно к оберткам для C++ DLL, но все они немного отличаются, такое ощущение, что многие...
Не могу понять почему wp_get_post_tags не получает ID поста
тренируюсь писать бота, хочу написать бота который будет авторизоваться в Twittercom и показывать ленту новостей