Как я могу установить значок для ListViewSubItem?

Я подавил бы ошибку и обработал бы ее . Иначе Вы можете иметь проблема TOCTOU (Время проверки, время использования. Например, файл может быть удален после того, как file_exists возвращает true, но прежде fopen).

, Но я только подавил бы ошибки заставить их уйти. Они лучше быть видимым.

13
задан Cody Gray 7 April 2011 в 14:15
поделиться

5 ответов

Элемент управления 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;
}
13
ответ дан 1 December 2019 в 20:57
поделиться

Используйте P / Invoke и отправьте сообщение LVM_SETITEM в представление списка (вы должны установить стиль LVS_EX_SUBITEMIMAGES при создании элемента управления или через LVM_SETEXTENDEDLISTVIEWSTYLE), укажите индекс подэлемента и соответствующий индекс изображения . Вам нужно будет сделать это для каждого элемента списка, который вы вставляете.

7
ответ дан 1 December 2019 в 20:57
поделиться

Наследование от ListView и рисование собственных значков.

public class MyListView : ListView
{
    protected override void OnDrawSubItem(System.Windows.Forms.DrawListViewSubItemEventArgs e)
    {
        base.OnDrawSubItem(e);
    }
}
2
ответ дан 1 December 2019 в 20:57
поделиться

Для этого нет поддержки .NET.

Взгляните на этот проект.

0
ответ дан 1 December 2019 в 20:57
поделиться

ObjectListView - это оболочка с открытым исходным кодом для .NET Winforms ListView. Он поддерживает изображения в подэлементах с использованием стратегии p / invoke, упомянутой в @ ligget78. Он также решает многие другие общие проблемы с ListView.

Он позволяет вам создавать очень красивые ListView с минимальными усилиями:

alt text
(источник: sourceforge.net )

5
ответ дан 1 December 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: