Иконки ListView не удаляются. Отобразить по-другому?

У меня есть ListView с несколькими столбцами. SmallImageList ListView содержит три значка; стрелка вверх, стрелка вниз и значок папки. Когда щелкают один из заголовков столбцов, список сортируется по этому значению, и, чтобы проиллюстрировать это, в заголовок вставляется значок, показывающий стрелку вверх или вниз из его SmallImageList. Это прекрасно работает.

Моя проблема в том, что при нажатии на новый столбец для сортировки значок в старом заголовке должен исчезнуть, но это не так. Вместо нее вставляется значок папки. Это происходит каждый раз, когда щелкается новый заголовок, поэтому в конечном итоге все заголовки заполняются значками папок.

Всякий раз, когда щелкается столбец, все столбцы перебираются, и их ImageKey устанавливается в пустую строку, а затем заменяется ImageKey для стрелок, если это был щелкнутый столбец. Пустая строка явно загружает значок папки.

for (int i = 0; i < m_LVCases.Columns.Count; i++)
{
    m_LVCases.Columns[i].ImageKey = "";
    if (i == e.Column)
    {
        if (m_ListViewColumnSorter.Order == SortOrder.Ascending)
            m_LVCases.Columns[i].ImageKey = SortOrder.Ascending.ToString();
        else if (m_ListViewColumnSorter.Order == SortOrder.Descending)
            m_LVCases.Columns[i].ImageKey = SortOrder.Descending.ToString();
    }
}

Я пока не могу выкладывать скриншоты, так как у меня недостаточно репутации. Есть ли у кого-нибудь решение, чтобы полностью удалить значок из заголовка столбца, или мне нужно сделать какое-то волшебство, чтобы отобразить это по-другому?

--Edit-- Это проект, который я взял на себя, поэтому я пытаюсь собрать все воедино. Я обнаружил, что установка ImageKey для столбца на null привела к тому, что все заголовки (кроме того, по которому щелкнули) получили значок папки, что для меня очень странно. Я попытался добавить новый значок только с прозрачным цветом. На самом деле это очистило все значки, но оставило пробел там, где должен был быть значок. Есть ли способ вместо этого разместить выравнивание значков справа, чтобы он не перемещал текст заголовка для каждого столбца?


person Lars Kristensen    schedule 09.05.2011    source источник


Ответы (2)


В справочнике MSDN есть довольно чистый пример: здесь

То, что вы делаете, сильно отличается, но что может вам помочь, так это установить для свойства .visible столбца sortimage значение false для других столбцов.

person nycdan    schedule 09.05.2011
comment
Эта ссылка MSDN предназначена для элемента управления Webcontrol ListView, который отличается от элемента управления Winforms ListView. Например, Winforms ListView не имеет свойства SortDirection и не реализует событие Sorting. Прямо сейчас я отвечаю на событие ColumnClick, чтобы выполнить сортировку и установить изображения в соответствии с выбранным столбцом. - person Lars Kristensen; 10.05.2011
comment
Я просмотрел свойство imageKey. столбцов ListView, и изображение следует удалить, установив для imageKey недопустимое значение. Я сделал небольшой пример приложения, и оно работает, поэтому в моем приложении должно быть что-то совершенно другое. У кого-нибудь есть идеи, где может быть проблема? - person Lars Kristensen; 10.05.2011

Я исправил проблему сам. Вместо этого я пытался разместить значки справа от текста, но, установив свойство TextAlign столбца на что-либо сразу после очистки imageKey, значки папок перестали появляться.

Итак, я снял симптомы, но до сих пор не знаю, что это была за болезнь.

person Lars Kristensen    schedule 10.05.2011