Если кому-то нужно быстрое решение (оно рисует стрелку вверх / вниз в начале текста заголовка столбца):
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);
}