如何在.NET 2.0 WinForms ListView中设置具有标题排序字形及其方向的列?
listview是.net不是托管控件,它是Win32 ListView公共控件的一个非常薄的包装器。它甚至不是一个非常好的包装器 - 它不会暴露真实列表视图的所有功能。
Win32 listview通用控件支持使用主题绘制自己。其中一个主题元素是标题排序箭头。 Windows资源管理器的listview公共控件知道如何使用该主题元素绘制其中一列。
答案 0 :(得分:3)
如果有人需要快速解决方案(它在列标题文本的开头绘制向上/向下箭头):
<强> 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 :(得分:1)
我在列的标题中使用unicode箭头字符,并将标题设置为linkbutton。
答案 2 :(得分:1)
答案 3 :(得分:0)
本文很有帮助,使用SendMessage DllImport。
http://www.codeproject.com/Tips/734463/Sort-listview-Columns-and-Set-Sort-Arrow-Icon-on-C