C# 使用View.Details用ImageList填充ListView

C# 使用View.Details用ImageList填充ListView,c#,.net,listview,imagelist,detailview,C#,.net,Listview,Imagelist,Detailview,在我的listview中加载图标时出现问题。我可以让图像在大视图下工作,但不能在细节上工作,不太确定我做错了什么 private void CreateList() { listView1.View = View.Details; listView1.Columns.Add("Icon", -2, HorizontalAlignment.Center); listView1.Columns.Add("Name", -2, HorizontalAlignment.Lef

在我的listview中加载图标时出现问题。我可以让图像在大视图下工作,但不能在细节上工作,不太确定我做错了什么

private void CreateList()
{
    listView1.View = View.Details;

    listView1.Columns.Add("Icon", -2, HorizontalAlignment.Center);

    listView1.Columns.Add("Name", -2, HorizontalAlignment.Left);

    imageList1.ImageSize = new Size(32, 32);

    for (int i = 0; i < subKeys.Length; i++)
    {
        if (subKeys[i].Contains("App"))
        {
            imagePath = subKeys[i];

            if (System.IO.File.Exists(imagePath))
            {
                imageList1.Images.Add(Image.FromFile(imagePath));
            }

            numberOfImages++;
        }
    }

    listView1.StateImageList = this.imageList1;
}
private void CreateList()
{
listView1.View=View.Details;
listView1.Columns.Add(“Icon”、-2,HorizontalAlignment.Center);
listView1.Columns.Add(“Name”,-2,HorizontalAlignment.Left);
imageList1.ImageSize=新大小(32,32);
for(int i=0;i
尝试以下代码:

        DirectoryInfo dir = new DirectoryInfo(@"c:\myPicutures"); //change and get your folder
        foreach (FileInfo file in dir.GetFiles())
        {
            try
            {
                this.imageList1.Images.Add(Image.FromFile(file.FullName));
            }
            catch{
                Console.WriteLine("This is not an image file");
            }
        }
        this.listView1.View = View.LargeIcon;
        this.imageList1.ImageSize = new Size(32, 32);
        this.listView1.LargeImageList = this.imageList1;
        //or
        //this.listView1.View = View.SmallIcon;
        //this.listView1.SmallImageList = this.imageList1;

        for (int j = 0; j < this.imageList1.Images.Count; j++)
        {
            ListViewItem item = new ListViewItem();
            item.ImageIndex = j;
            this.listView1.Items.Add(item);
        }
DirectoryInfo dir=newdirectoryinfo(@“c:\myPicutures”)//更改并获取您的文件夹
foreach(dir.GetFiles()中的FileInfo文件)
{
尝试
{
this.imageList1.Images.Add(Image.FromFile(file.FullName));
}
抓住{
WriteLine(“这不是图像文件”);
}
}
this.listView1.View=View.LargeIcon;
this.imageList1.ImageSize=新大小(32,32);
this.listView1.LargeImageList=this.imageList1;
//或
//this.listView1.View=View.SmallIcon;
//this.listView1.SmallImageList=this.imageList1;
对于(int j=0;j
您甚至可以添加第二列,并“添加”文件名。

更改

listView1.StateImageList = this.imageList1;

并确保正在为每个列表项设置
ImageIndex
ImageKey
属性

listItem.ImageIndex = 0; // or,
listItem.ImageKey = "myImage";

字符串数组包含一个特定的路径列表,因此我不能使用这样的目录:P方法的其余部分的问题是我需要它来创建listView.View=View.Detail;此外,我相信我已经看到了您在stackoverflow上发布的代码,在搜索类似问题时,您可能应该参考您从哪里获得的代码:Pah不适用于我:(可能是我正在做的其他事情有问题:p确保您正在设置图像键/索引,更新答案。非常好,谢谢!必须先取消对我的方法的注释,然后它才能工作,再次感谢!
listItem.ImageIndex = 0; // or,
listItem.ImageKey = "myImage";