C# ObjectListView显示图标

C# ObjectListView显示图标,c#,icons,objectlistview,C#,Icons,Objectlistview,试图在ObjectListview中放置图标,下面是我的一段代码,其中应该放置图标: objectListView1.SmallImageList = imageList1; deleteColumn.IsEditable = true; deleteColumn.ImageGetter = delegate { return 0; }; deleteColumn.AspectGetter

试图在ObjectListview中放置图标,下面是我的一段代码,其中应该放置图标:

objectListView1.SmallImageList = imageList1;

        deleteColumn.IsEditable = true;
        deleteColumn.ImageGetter = delegate
        {
            return 0;
        };
        deleteColumn.AspectGetter = delegate
        {
            return "Delete";
        };
imageList1已经有了一个图像,这段代码应该在“Delete”旁边放一个图标,但它根本没有出现,通过cookbooks和Google查看,我仍然不知道。有人能帮我吗

这是完整的表单代码,以备需要:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
    public Form1()
    {
        InitializeComponent();
        objectListView1.AllowDrop = true;
        objectListView1.DragEnter += new DragEventHandler(objectListView1_DragEnter);
        objectListView1.DragDrop += new DragEventHandler(objectListView1_DragDrop);
        objectListView1.CellEditActivation = BrightIdeasSoftware.ObjectListView.CellEditActivateMode.SingleClick;
        objectListView1.CellEditStarting += deleteItems;
        objectListView1.SmallImageList = imageList1;

        deleteColumn.IsEditable = true;
        deleteColumn.ImageGetter = delegate
        {
            return 0;
        };
        deleteColumn.AspectGetter = delegate
        {
            return "Delete";
        };
    }

    private void objectListView1_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            e.Effect = DragDropEffects.Copy;
        }
        else
        {
            e.Effect = DragDropEffects.None;
        }
    }

    private void objectListView1_DragDrop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
        {
            string[] droppedFiles = (string[]) e.Data.GetData(DataFormats.FileDrop);
            foreach (string path in droppedFiles)
            {
                if (File.Exists(path))
                {
                    FileObject fo = new FileObject(path, "added later"); 
                    objectListView1.AddObject(fo);
                }
            }
        }
    }

    private void deleteItems(object sender, BrightIdeasSoftware.CellEditEventArgs e)
    {
        if(e.Column == deleteColumn)
        {
            e.Cancel = true;
            objectListView1.RemoveObject(e.RowObject);
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

}

}

要使图像显示在列中的文本旁边,您必须:

  • ObjectListView
    连接到
    ImageList
    (使用
    SmallImageList
    属性)
  • 为必须显示图像的列安装
    ImageGetter
    委托
  • 确保
    图像列表中确实存在图像
  • 完成后,将显示图像(我刚刚测试过)


    不过,有一个陷阱。根据您的问题,我怀疑“删除”列可能不是
    ObjectListView
    中的第一列。以上步骤仅允许在第一列中显示图像。对于后续列,必须将
    showmagesonsubitems
    属性设置为True。是吗?

    您看过MSDN上的文档了吗?它们通常提供足够的例子。Look and.ObjectListView实际上不是Microsoft产品,问题似乎与它有关,而不是与ImageList有关。谢谢各位,问题已经解决,我的
    ShowImageSubItems
    设置为false,非常感谢下面的答案否,删除列位于第三列(客户要求,无法更改)嘿,谢谢,我错过了
    ShowImagesOnSubItems
    ,这真的是个问题,因为没有关于它的教程(或者可能我没有足够努力)。非常感谢:)