如何使用ObjectListView显示包含当前行索引的列?

时间:2013-04-23 07:42:15

标签: c# .net winforms objectlistview

我有以下课程:

public class people
{
    public string name { get; set; }
    public string hobby { get; set; }
}

我想要显示如下列表:

no | name | hobby
-----------------------
01 | kim  | tv
02 | kate | pc
03 | kim  | tv
04 | kate | pc

我知道实现这一目标的唯一方法是将人类改为

public class people
{
    public string no{ get; set; }
    public string name { get; set; }
    public string hobby { get; set; }
}

并循环List<people>以设置每个no属性。

是否有更好的方法来添加索引编号列?

1 个答案:

答案 0 :(得分:6)

是的,您可以通过像这样处理'FormatRow'事件来实现您想要的目标:

objectListView1.FormatRow += delegate(object sender, FormatRowEventArgs args) {
    args.Item.Text = args.RowIndex.ToString();
};

这将显示ObjectListView的第一列上从零开始的索引。如果您希望它显示为01,02 ...您可以指定格式字符串和偏移量,如:

args.Item.Text = (args.RowIndex + 1).ToString("D2");

作为旁注:使用AspectGetter(这将更加优雅)不可能实现这一点,因为在调用时,该行尚未添加到OLV,因此没有索引信息。

// !!! won't work !!!
indexColumn.AspectGetter += delegate(object rowObject) {
    return objectListView1.IndexOf(rowObject).ToString();
};