Как установить заголовок сортировки глифа в .NET ListView? - PullRequest
3 голосов
/ 16 сентября 2008

Как установить столбец с глифом сортировки заголовка и его направлением в .NET 2.0 WinForms ListView?

Bump

Список: .net не является управляемым элементом управления, это очень тонкая оболочка для общего элемента управления Win32 ListView. Это даже не очень хорошая оболочка - она ​​не раскрывает всех возможностей реального списка.

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

  • поддерживает ли просмотр списка Win32 указание, какой столбец имеет какой порядок сортировки?
  • контролирует ли заголовок Win32, что представление списка внутренне использует поддержку, указывающую, какой столбец имеет какой порядок сортировки?
  • поддерживает ли элемент управления заголовка win32 пользовательский рисунок, поэтому я могу сам нарисовать глиф сортировки заголовка?
  • поддерживает ли элемент управления winview listview настраиваемое рисование заголовка, поэтому я могу сам нарисовать глиф сортировки заголовка?
  • поддерживает ли элемент управления .NET ListView настраиваемое рисование заголовка, поэтому я могу сам нарисовать глиф сортировки заголовка?

Ответы [ 4 ]

3 голосов
/ 31 марта 2016

Если кому-то нужно быстрое решение (оно рисует стрелку вверх / вниз в начале текста заголовка столбца):

ListViewExtensions.cs:

public static class ListViewExtensions
{
    public static void DrawSortArrow(this ListView listView, SortOrder sortOrder, int colIndex)
    {
        string upArrow = "▲   ";
        string downArrow = "▼   ";

        foreach (ColumnHeader ch in listView.Columns)
        {
            if (ch.Text.Contains(upArrow))
                ch.Text = ch.Text.Replace(upArrow, string.Empty);
            else if (ch.Text.Contains(downArrow))
                ch.Text = ch.Text.Replace(downArrow, string.Empty);
        }

        if (sortOrder == SortOrder.Ascending)
            listView.Columns[colIndex].Text = listView.Columns[colIndex].Text.Insert(0, downArrow);
        else
            listView.Columns[colIndex].Text = listView.Columns[colIndex].Text.Insert(0, upArrow);
    }
}

Использование:

private void lstOffers_ColumnClick(object sender, ColumnClickEventArgs e)
{
    lstOffers.DrawSortArrow(SortOrder.Descending, e.Column);
}
1 голос
/ 15 января 2010

Есть список, который я использую, который встроен в него. Он называется XPTable .. Я копаюсь в своем исходном коде, чтобы найти тот вспомогательный класс, который будет рисовать глиф на основе порядка сортировки ... Это код, который я использовал здесь ..

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 16 сентября 2008

Я использую символы стрелки Юникода в заголовке столбца и делаю заголовок кнопкой ссылки.

0 голосов
/ 11 ноября 2014

Эта статья полезна, использует SendMessage DllImport.

http://www.codeproject.com/Tips/734463/Sort-listview-Columns-and-Set-Sort-Arrow-Icon-on-C

...