C#在objectlistview中将多个图像添加到同一列

C#在objectlistview中将多个图像添加到同一列,c#,objectlistview,C#,Objectlistview,我尝试将图像添加到我的第一列(以后可能会更改为另一列,现在它位于第一列),到目前为止我已经完成了 if (item.Index == 0) { item.ImageGetter = delegate (object RowObj) { return ((RowObjectModel)RowObj).ImageToShow.ToString(); }; } 这部分开始时,我使用一个自定义headerstyle并将其应用于构造函数,同时我也使用ImageGe

我尝试将图像添加到我的第一列(以后可能会更改为另一列,现在它位于第一列),到目前为止我已经完成了

if (item.Index == 0)
{
    item.ImageGetter = delegate (object RowObj)
    {
        return ((RowObjectModel)RowObj).ImageToShow.ToString();
    };
}
这部分开始时,我使用一个自定义headerstyle并将其应用于构造函数,同时我也使用ImageGetter部分。我也这样设置了我的SmallImageList

ImageList IList = new ImageList();
IList.Images.Add("MyIcon", Properties.Resources.MyIcon);
mainForm.objListview.SmallImageList = IList;
我有两个问题与此代码,首先我不能设置我的形象。它没有显示在我的listview上。 我要做到的是:

(objListview.GetItem(z).RowObject as RowObjectModel).ImageToShow = ThumbnailImages.MyIcon;
我的枚举如下所示:

public enum ThumbnailImages
{
    NULL = 0,
    MyIcon = 1,
    MyIcon2 = 2,
    MyIcon3 = 3,
    MyIcon4 = 4,
    MyIcon5 = 5
}
第二个问题是,我根本不知道如何在同一行的同一列中添加第二个图像。我甚至不确定这是否可能。。但我必须以某种方式去做,所以我愿意接受任何想法

编辑: 好的,我找到了解决我第一个问题的方法。我没有使用UpdateObject/UpdateObjects方法。我用正确的图像标记了我所有的物品,它们应该显示并使用这种方法,所有的东西都起作用了。现在我只需要找到一种方法,在一个单元格中同时显示两个图像

编辑2: 关于我的第二个问题,我发现了这个类-->ImagesRender

但到目前为止,我还没有找到任何有效的解决方案,我也不知道这是如何工作的

现在我只需要找到一种方法,在一个单元格中同时显示两个图像

您可以通过显示一个包含两个图像的图像来解决显示两个图像的要求。下面的例子就是这样做的。需要注意的一点是,您可能应该在所有组合的前面构建一个缓存,以便可以高速返回它们,而不是在
ImageGetter
委托中构建它们

现在我只需要找到一种方法,在一个单元格中同时显示两个图像

您可以通过显示一个包含两个图像的图像来解决显示两个图像的要求。下面的例子就是这样做的。需要注意的一点是,您可能应该在所有组合的前面构建一个缓存,以便可以高速返回它们,而不是在
ImageGetter
委托中构建它们


多亏了@Thomas N,我找到的解决方案是-->

在objectlistview初始值设定项中,我执行了以下操作:

item.Renderer = new ImageRenderer();
item.AspectGetter = delegate (object RowObj)
{
    return ((RowObjectModel)RowObj).ImagesToShow;
};
项目在此表示第0列。我正在迭代所有列以应用HeaderFormatStyle。我想我也可以在这里做

在我做这个初始化之前,我还设置了我的图像

ImageList IList = new ImageList();
IList.Images.Add("NULL", Properties.Resources.Null);
IList.Images.Add("MyIcon", Properties.Resources.MyIcon);
IList.Images.Add("MyIcon2", Properties.Resources.MyIcon2);
IList.Images.Add("MyIcon3", Properties.Resources.MyIcon3);
IList.Images.Add("MyIcon4", Properties.Resources.MyIcon4);
IList.Images.Add("MyIcon5", Properties.Resources.MyIcon5);
objListview.SmallImageList = IList;
我所要做的就是调用我在模型类中编写的方法

public void AddThumbnailImage(ThumbnailImages tImage)
        {
            if (tImage == ThumbnailImages.NULL)
            {
                ImagesToShow.Clear();
            }
            else
            {
                if (!ImagesToShow.Contains((int)tImage))
                    ImagesToShow.Add((int)tImage);
            }
        }

我知道我的解决方案与你的非常相似,托马斯,但我只是想展示一下我是如何做到的:)

多亏了@Thomas N,我找到的解决方案是这样的-->

在objectlistview初始值设定项中,我执行了以下操作:

item.Renderer = new ImageRenderer();
item.AspectGetter = delegate (object RowObj)
{
    return ((RowObjectModel)RowObj).ImagesToShow;
};
项目在此表示第0列。我正在迭代所有列以应用HeaderFormatStyle。我想我也可以在这里做

在我做这个初始化之前,我还设置了我的图像

ImageList IList = new ImageList();
IList.Images.Add("NULL", Properties.Resources.Null);
IList.Images.Add("MyIcon", Properties.Resources.MyIcon);
IList.Images.Add("MyIcon2", Properties.Resources.MyIcon2);
IList.Images.Add("MyIcon3", Properties.Resources.MyIcon3);
IList.Images.Add("MyIcon4", Properties.Resources.MyIcon4);
IList.Images.Add("MyIcon5", Properties.Resources.MyIcon5);
objListview.SmallImageList = IList;
我所要做的就是调用我在模型类中编写的方法

public void AddThumbnailImage(ThumbnailImages tImage)
        {
            if (tImage == ThumbnailImages.NULL)
            {
                ImagesToShow.Clear();
            }
            else
            {
                if (!ImagesToShow.Contains((int)tImage))
                    ImagesToShow.Add((int)tImage);
            }
        }

我知道我的解决方案与你的非常相似,托马斯,但我只是想展示一下我是如何做到的:)

谢谢你的回答。这向我展示了如何在我的应用程序中实现这一点。我已经更改了,我也会发布我的解决方案,以防有人需要谢谢你的回答。这向我展示了如何在我的应用程序中实现这一点。我已经更改了它,我也会发布我的解决方案,以防有人需要