关于排序:如何在.NET ListView中设置标题排序字形?

关于排序:如何在.NET ListView中设置标题排序字形?

How to set the header sort glyph in a .NET ListView?

如何在.NET 2.0 WinForms ListView中设置具有标题排序字形及其方向的列?

磕碰

listview是.net不是托管控件,它是围绕Win32 ListView通用控件的非常薄的包装器。它甚至不是一个很好的包装器-它没有公开真实列表视图的所有功能。

Win32 listview公共控件支持使用主题进行绘制。主题元素之一是标题排序箭头。 Windows资源管理器的listview公共控件知道如何使用该主题元素绘制其列之一。

  • Win32 listview是否支持指定哪个列具有什么排序顺序?
  • listview内部使用的Win32标头控件是否支持指定哪个列具有什么排序顺序?
  • win32标头控件是否支持自定义绘图,因此我可以自己绘制标头排序字形?
  • win32 listview控件是否支持自定义标题绘图,因此我可以自己绘制标题排序字形?
  • .NET ListView控件是否支持自定义标头绘制,因此我可以自己绘制标头排序字形?

如果有人需要快速解决方案(它在列标题文本的开头绘制向上/向下箭头):

ListViewExtensions.cs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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);
    }
}

用法:

1
2
3
4
private void lstOffers_ColumnClick(object sender, ColumnClickEventArgs e)
{
    lstOffers.DrawSortArrow(SortOrder.Descending, e.Column);
}

我使用了一个内置的列表视图。 它被称为XPTable。我正在挖掘我的源代码,以找到将根据排序顺序绘制字形的帮助程序类。这是我在这里使用的代码。

希望这可以帮助,
最好的祝福,
汤姆


我在列标题中使用了unicode箭头字符,并将标题设置为linkbutton。


本文很有帮助,使用SendMessage DllImport。

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


推荐阅读

    linuxps命令排序?

    linuxps命令排序?,系统,状态,情况,基础,软件,进程,工具,命令,实时,发行,linux

    文件夹排序linux命令?

    文件夹排序linux命令?,系统,数字,信息,工作,时间,命令,管理,设备,单位,工具,

    linux设置壁纸的命令?

    linux设置壁纸的命令?,图片,系统,电脑,照片,位置,终端,颜色,字体,单击,壁纸,

    linux恢复命令行设置?

    linux恢复命令行设置?,系统,工作,密码,信息,工具,地址,电脑,命令,情况,地方,

    linux命令提示设置?

    linux命令提示设置?,系统,工作,地址,信息,命令,软件,目录,管理,变量,文件,Lin

    linux设置man命令?

    linux设置man命令?,信息,系统,工具,工作,地址,命令,基础,地方,基本知识,技术

    linux参数设置命令?

    linux参数设置命令?,网络,系统,地址,工作,信息,管理,服务,名称,状态,命令,在l

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    linux设置根命令过短?

    linux设置根命令过短?,系统,工作,软件,地址,命令,代码,情况,管理,基础,位置,3

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    linux命令行设置字体?

    linux命令行设置字体?,系统,工具,终端,软件,电脑,数字,位置,等级,字体,命令,L

    linux命令快捷设置?

    linux命令快捷设置?,第一,系统,名称,终端,发行,首页,命令,快捷键,窗口,桌面,l

    linux命令设置扩展屏?

    linux命令设置扩展屏?,工具,系统,电脑,技术,软件,装备,情况,工作,命令,显示

    linux命令设置自启动?

    linux命令设置自启动?,服务,系统,信息,数字,检测,工具,状态,密码,跨行,脚本,l

    linux设置命令在哪里?

    linux设置命令在哪里?,系统,地址,代码,管理,密码,命令,位置,名字,服务,分行,l

    linuxls命令排序?

    linuxls命令排序?,工作,系统,信息,数据,命令,目录,标准,基础,管理,时间,Linux

    linux命令设置中文?

    linux命令设置中文?,系统,工作,数据,管理,设备,环境,标的,第一,网上,模式,lin

    设置网址命令linux?

    设置网址命令linux?,地址,系统,网络,代码,网址,密码,信息,电脑,管理,基础,lin

    linux设置日期命令?

    linux设置日期命令?,时间,系统,标准,命令,信息,大陆,国家,日期,时钟,时区,详