3

.NET 2.0 WinForms ListView で、ヘッダーの並べ替えグリフとその方向を持つ列を設定するにはどうすればよいですか?

バンプ

listview is .net はマネージ コントロールではなく、Win32 ListView コモン コントロールの非常に薄いラッパーです。これはあまり優れたラッパーではありません。実際のリストビューのすべての機能を公開しているわけではありません。

Win32 リストビュー コモン コントロールは、テーマを使用した描画をサポートしています。テーマ化された要素の 1 つは、ヘッダーの並べ替え矢印です。Windows エクスプローラーのリストビュー コモン コントロールは、そのテーマ要素で列の 1 つを描画する方法を認識しています。

  • Win32 リストビューは、どの列のソート順を指定することをサポートしていますか?
  • リストビューが内部的に使用する Win32 ヘッダー コントロールは、どの列の並べ替え順序を指定することをサポートしていますか?
  • win32 ヘッダー コントロールはカスタム描画をサポートしているので、自分でヘッダー ソート グリフを描画できますか?
  • win32 リストビュー コントロールはカスタム ヘッダー描画をサポートしているので、自分でヘッダー ソート グリフを描画できますか?
  • .NET ListView コントロールはカスタム ヘッダー描画をサポートしているので、自分でヘッダー ソート グリフを描画できますか?
4

4 に答える 4

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);
}
于 2016-03-31T11:44:18.453 に答える
1

列のタイトルに Unicode の矢印文字を使用し、ヘッダーをリンク ボタンにします。

于 2008-09-16T15:04:21.890 に答える
1

私が使用しているリストビューには、それが組み込まれています。それはXPTableと呼ばれます..ソース コードを調べて、並べ替え順序に基づいてグリフを描画するヘルパー クラスを見つけています...これは、ここで使用したコードです..

これがお役に立てば幸いです。よろしくお願いします、トム。

于 2010-01-15T16:06:57.780 に答える
0

この記事は役に立ちます。SendMessage DllImport を使用します。

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

于 2014-11-11T04:19:30.337 に答える