gpt4 book ai didi

listview - 如何在 .NET ListView 中设置标题排序字形?

转载 作者:行者123 更新时间:2023-12-02 21:31:51 25 4
gpt4 key购买 nike

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

凹凸

.net 的 listview 不是托管控件,它是 Win32 ListView 公共(public)控件的一个非常薄的包装。它甚至不是一个非常好的包装器 - 它没有公开真正 ListView 的所有功能。

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

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

最佳答案

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

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);
}

关于listview - 如何在 .NET ListView 中设置标题排序字形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com