如何根据displayindex获取列表视图的列标题列表?

sth*_*hay 5 c# listview

如果列表视图的AllowReorder列设置为true,如何在运行时根据其displayindex获取列标题文本的字符串列表?listview.Columns仅返回原始顺序中的列.

Mar*_*ell 5

C#2.0?还是C#3.0?LINQ答案(C#3.0,带有.NET 3.5或带有LINQBridge的 .NET 2.0/3.0 )要容易得多;-p

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

VS:

        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;
        });
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,它都会为您提供List<string>列标题文本值.