4

ObjectListview にアイコンを配置しようとしています。アイコンを配置する必要があるコードは次のとおりです。

objectListView1.SmallImageList = imageList1;

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

imageList1 には既に画像があります。このコードは「削除」の横にアイコンを配置する必要がありますが、まったく表示されず、クックブックと 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)
    {

    }

}

}

4

1 に答える 1

7

列のテキストの横に画像を表示するには、次のことを行う必要があります。

  1. に接続しますObjectListViewImageListプロパティを使用SmallImageList)。
  2. ImageGetter画像を表示する必要がある列のデリゲートをインストールします。
  3. に実際に画像があることを確認してくださいImageList

これが完了すると、画像が表示されます(私はこれをテストしました)。

ただし、1つの問題があります。あなたの質問から、「削除」列がの最初の列ではない可能性があると思いますObjectListView。上記の手順では、最初の列にのみ画像を表示できます。以降の列では、ShowImagesOnSubItemsプロパティをTrueに設定する必要があります。それでいいの?

于 2013-03-22T08:53:09.793 に答える