5

リストビューの AllowReorder 列が true に設定されている場合、実行時に displayindex に基づいて列ヘッダー テキストの文字列リストを取得するにはどうすればよいですか? listview.Columns は元の順序で列のみを返します。

4

1 に答える 1

5

C#2.0? それともC#3.0? LINQ の回答 (C# 3.0、.NET 3.5 または .NET 2.0/3.0 とLINQBridge ) の方がずっと簡単です;-p

すなわち

    var names = (from col in listView.Columns.Cast<ColumnHeader>()
                 orderby col.DisplayIndex
                 select col.Text).ToList();

対:

        List<ColumnHeader> cols = new List<ColumnHeader>();
        // populate
        foreach (ColumnHeader column in listView.Columns) {
            cols.Add(column);
        }
        // sort
        cols.Sort(delegate(ColumnHeader x, ColumnHeader y) {
            return x.DisplayIndex.CompareTo(y.DisplayIndex);
        });
        // project
        List<string> names = cols.ConvertAll<string>(delegate(ColumnHeader x) {
            return x.Text;
        });

どちらの方法でもList<string>、列ヘッダーのテキスト値が得られます。

于 2008-12-08T04:58:08.183 に答える