C # пропустить флажок listView - PullRequest
2 голосов
/ 31 января 2010

У меня есть listView, в котором перечислены несколько файлов, и набор флажков, которые позволяют пользователям загружать их с FTP-сервера, например:

Filename            Size    Last modified           New version
[ ] someimage.jpg   120 kB  2010-01-13 16:12:59     Yes
[ ] otherfile.zip   12 kB   2009-12-29 09:33:15     No
[ ] folder      -   -                               -

Я не хочу иметь флажок в папке, но мне нужно, чтобы он (папка) отображался в списке.

Как мне лучше отсортировать это?

Обновление: я использую Windows Forms.

1 Ответ

2 голосов
/ 01 февраля 2010

вы можете поместить свой список в состояние OwnerDraw (установите значение true для свойства OwnerDraw). Затем определите обработчики событий DrawSubItem и DrawColumnHeader. В DrawSubItem сделайте рисование по умолчанию для элементов, которые требуют рисования флажков. Проверьте код ниже; следует пропустить рисование флажка для элемента с «1» в его текстовом поле и рисовать только текст элемента.

private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    if (e.ColumnIndex == 0 && e.Item.Text=="1")
    {
        e.DrawBackground();
        e.DrawText();
    }
    else
    {
        e.DrawDefault = true;
    }
}

private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    e.DrawDefault = true;
}

в качестве альтернативы вы можете сделать свою собственную окраску флажка с помощью CheckBoxRenderer class

надеюсь, это поможет, с уважением

...