Ian*_*oyd 4 sorting listview themes header glyph
如何在 .NET 2.0 WinForms ListView 中设置具有标题排序标志符号的列及其方向?
.net 的 listview 不是托管控件,它是 Win32 ListView 公共控件的一个非常薄的包装。它甚至不是一个非常好的包装器 - 它没有公开真正列表视图的所有功能。
Win32 listview通用控件支持使用主题绘制自身。主题元素之一是标题排序箭头。Windows 资源管理器的列表视图公共控件知道如何使用该主题元素绘制其列之一。
小智 5
如果有人需要快速解决方案(它在列标题文本的开头绘制向上/向下箭头):
\n\nListViewExtensions.cs:
\n\npublic static class ListViewExtensions\n{\n public static void DrawSortArrow(this ListView listView, SortOrder sortOrder, int colIndex)\n {\n string upArrow = "\xe2\x96\xb2 ";\n string downArrow = "\xe2\x96\xbc ";\n\n foreach (ColumnHeader ch in listView.Columns)\n {\n if (ch.Text.Contains(upArrow))\n ch.Text = ch.Text.Replace(upArrow, string.Empty);\n else if (ch.Text.Contains(downArrow))\n ch.Text = ch.Text.Replace(downArrow, string.Empty);\n }\n\n if (sortOrder == SortOrder.Ascending)\n listView.Columns[colIndex].Text = listView.Columns[colIndex].Text.Insert(0, downArrow);\n else\n listView.Columns[colIndex].Text = listView.Columns[colIndex].Text.Insert(0, upArrow);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n用法:
\n\nprivate void lstOffers_ColumnClick(object sender, ColumnClickEventArgs e)\n{\n lstOffers.DrawSortArrow(SortOrder.Descending, e.Column);\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3359 次 |
| 最近记录: |