Я подавил бы ошибку и обработал бы ее . Иначе Вы можете иметь проблема TOCTOU (Время проверки, время использования. Например, файл может быть удален после того, как file_exists возвращает true, но прежде fopen).
, Но я только подавил бы ошибки заставить их уйти. Они лучше быть видимым.
Элемент управления ListView
не поддерживает изображения в подпунктах изначально. Проще всего переключиться на DataGridView
и использовать DataGridViewImageColumn
. Если это невозможно, вам нужно будет нарисовать значки самостоятельно, используя поддержку настраиваемого рисования в элементе управления ListView
. Для этого установите ListView.OwnerDraw = true
и обработайте события ListView.DrawSubItem
и ListView.DrawColumnHeader
.
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
// Only interested in 2nd column.
if (e.Header != this.columnHeader2)
{
e.DrawDefault = true;
return;
}
e.DrawBackground();
var imageRect = new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height);
e.Graphics.DrawImage(SystemIcons.Information.ToBitmap(), imageRect);
}
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}
Используйте P / Invoke и отправьте сообщение LVM_SETITEM в представление списка (вы должны установить стиль LVS_EX_SUBITEMIMAGES при создании элемента управления или через LVM_SETEXTENDEDLISTVIEWSTYLE), укажите индекс подэлемента и соответствующий индекс изображения . Вам нужно будет сделать это для каждого элемента списка, который вы вставляете.
Наследование от ListView и рисование собственных значков.
public class MyListView : ListView
{
protected override void OnDrawSubItem(System.Windows.Forms.DrawListViewSubItemEventArgs e)
{
base.OnDrawSubItem(e);
}
}
ObjectListView - это оболочка с открытым исходным кодом для .NET Winforms ListView. Он поддерживает изображения в подэлементах с использованием стратегии p / invoke, упомянутой в @ ligget78. Он также решает многие другие общие проблемы с ListView.
Он позволяет вам создавать очень красивые ListView с минимальными усилиями:
(источник: sourceforge.net )