首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectListView -显示阵列

ObjectListView -显示阵列
EN

Stack Overflow用户
提问于 2014-09-18 19:04:41
回答 3查看 923关注 0票数 0

假设我有以下代码:

代码语言:javascript
复制
public sealed class MyStruct {
    // ... snip
    public uint[] ItemStatValue { get; set; }
    // ... snip
}

// MainForm.cs
// ...
Generator.GenerateColumns(this.ContentListView, structure, true);
ContentListView.SetObjects(_records);
// ...

是否有一种方法可以指示GenerateColumns将ItemStateValue属性的每个元素作为一个列单独处理,并适当地命名它们?("Item Stat Value 1“、"Item Stat Value 2”等)目前,它只对对象调用ToString(),从而返回System.Type.UInt32[]。不完全是我想要的。

我用的是http://www.codeproject.com/Articles/16009/A-Much-Easier-to-Use-ListView

干杯!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-12 16:33:20

@Grammarian -所以在查看代码之后,我注意到了字段的方面获取器。但是,Generator.GenerateColumns似乎没有使用它的第三个布尔参数allProperties。

所以我把这个快速代码拼凑在一起,果然,它起了作用。它似乎也不会引起任何错误,这是很好的。

这里有一个要点:

https://gist.github.com/Warpten/c792ad66ad20cc69a918

注意:这还需要允许将OLVColumnAttribute和OLVIgnoreAttribute应用于字段。(这很容易;)

干杯!

票数 0
EN

Stack Overflow用户

发布于 2014-09-19 06:58:04

不那是不可能的。OLV使用对指定项类型的反射来收集所需的信息。如果您提供了一个IEnumerable,它只会查看第一个项目的类型。

Generator没有任何线索,也不关心项目的实际实例。而且,在建议的情况下,这也没有多大意义,因为每个结构之间的元素数可能不同。

票数 0
EN

Stack Overflow用户

发布于 2014-09-25 07:16:55

数组中将有多少项?ListViews有固定的列数,即每一行都有相同的列数。

如果您知道会有20个可能的统计数据,只需生成列。

代码语言:javascript
复制
const int numberOfColumns = 20;
for (int i = 0; i < numberOfColumns; i++) {
    var statIndex = i;
    var column = new OLVColumn();
    column.Name = "Stat" + i;
    column.AspectGetter = delegate(object x) {
        MyStruct myStruct = (MyStruct)x;
        return statIndex < myStruct.ItemStatValue.Length ? (uint?)myStruct.ItemStatValue[statIndex] : null;
    };
    column.AspectToStringConverter = delegate(object x) {
        uint? value = (uint?)x;
        return value.HasValue ? String.Format("Stat value: {0}", value.Value) : String.Empty;
    };
    this.ContentListView.AllColumns.Add(column);
}
this.ContentListView.RebuildColumns();

在GenerateColumns()之后调用它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25920491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档