我第一次尝试(经过多次尝试)将一个字符串数组放入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。
感谢。
答案 0 :(得分:4)
您没有使用正确的方法。基本思想是使用表示/包含数据的类中的对象填充OLV。有两种基本方法可以从给定对象填充OLV的列。
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
设置为“Name”,将第二列设置为“Ext”,将第三列设置为“Size”等等......
请注意,您不必使用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);