【问题标题】:Adding a row of data to ObjectListView向 ObjectListView 添加一行数据
【发布时间】:2014-04-13 13:40:59
【问题描述】:

我第一次尝试(经过多次尝试)将字符串数组放入 C# 中的 ObjectListView 行中。我没有收到任何错误,但是当我编译时,我得到的只是第一列中包含 null 的结果行。我正在从基本 ListView 切换到 ObjectListView 的额外功能。

 string[] info2 = new string[8] {fileCountSt, fileName, fileExt, fileSize, creator, dateCreated, lastAccessed, filePath};

this.objectListView_FindFiles.SetObjects(info2);

ObjectListView 设置为 8 列。我遵循了各种教程,但它们涉及很多不必要的华夫饼和代码。我正在寻找的只是将一些字符串分配给一个字符串数组并将其动态分配给 ObjectListView。

谢谢。

【问题讨论】:

    标签: c# objectlistview


    【解决方案1】:

    您没有使用正确的方法。基本思想是用代表/包含数据的类中的对象填充 OLV。有两种基本方法可以从给定对象填充 OLV 的列。

    1. 将每一列“AspectName”配置为 OLV 应该用来访问该列值的对象的属性名称。
    2. 使用列 AspectGetter 属性附加一个 AspectGetterDelegate 以提取要在该列中显示的值(这种方法允许自定义)。

    因此,在您的情况下,您不会使用字符串数组,而是创建一个包含您的信息的类,例如:

    class FileInfo {
        public string Name { get; set; }
        public string Ext { get; set; }
        public int Size { get; set; }
        public DateTime Created { get; set; }
    
        public FileInfo(string name, string ext, int size, DateTime created) {
            Name = name;
            Ext = ext;
            Size = size;
            Created = created;
        }
    }
    

    然后在设计器中配置您的列,将第一列的AspectName 设置为“名称”,第二列设置为“Ext”,第三列设置为“大小”,依此类推...

    请注意,您不必使用string 类型的属性。 OLV 会将所有类型转换为其基本字符串表示形式。这可以通过为 AspectToStringFormat 属性设置格式字符串来自定义。

    如果一切都设置好了,只需使用 SetObjects() 方法添加您的 FileInfo 对象。

    List<FileInfo> fInfos = new List<FileInfo>();
    fInfos.Add(new FileInfo("file1", "doc", 1234, new DateTime(2014, 04, 13)));
    fInfos.Add(new FileInfo("file2", "doc", 5678, new DateTime(2014, 04, 14)));
    objectListView1.SetObjects(fInfos);
    

    【讨论】:

    • 感谢您抽出宝贵时间 - 效果很好。事实上,它比当前的在线教程更清晰和解释性更强。现在看看额外的代码和工作是否值得使用 ObjectListView!
    • 很高兴它成功了。如果您弄清楚了 OLV 的工作原理以及它可以做什么,那么您将永远不会回头看标准的 ListView。而且你真的不会得到额外的代码。最后,它变得更干净了。 OLV 为您完成所有艰苦的工作,并且非常可定制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2021-10-05
    • 2011-03-08
    • 2018-03-01
    • 1970-01-01
    • 2016-08-07
    相关资源
    最近更新 更多