根据ObjectListView中rowobject的类型在列上显示图像或文本

时间:2015-03-04 15:19:25

标签: c# object objectlistview

我使用的FastObjectListView可以包含两种不同类型的对象。它可以是Testaction类型或Milestone类型的对象。如果它是Testaction类型的对象,则会有一个名为Successful的属性,我决定是显示绿色还是红色图像。如果对象来自类型Milestone,则属性Result为%-Number。现在我希望能够在同一列中显示图像或%-number。

this.olvColumn9.ImageGetter = delegate(object rowObject)
        {
                Testaction action = rowObject as Testaction;
                if (action.Successful)
                {
                    return 0;
                }
                else
                {
                    return 1;
                }
        };

这是将图像设置为列。图像存储在ImageList中。但我不知道如果文本不是来自类型Testaction,如何将文本设置到列中。

如果有任何帮助,我将不胜感激。

放松

1 个答案:

答案 0 :(得分:1)

如果对象类型为Milestone,它应该可以从ImageGetter处理程序返回NULL并从列的AspectGetter返回相应的字符串。

这样的事情(代码未检查语法和功能):

this.olvColumn9.ImageGetter = delegate(object rowObject) {
    if (rowObject is Testaction) {
        Testaction action = rowObject as Testaction;
            if (action.Successful) {
                return 0;
            } else {
                return 1;
            }
    } else {
        return null;
    }
};

this.olvColumn9.AspectGetter = delegate(object rowObject) {
    if (rowObject is Milestone) {
        return ((Milestone)rowObject).Result.ToString();
    }
};