Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 窗口形式的ListView中的图像有问题(C)_C#_Winforms_Listview - Fatal编程技术网

C# 窗口形式的ListView中的图像有问题(C)

C# 窗口形式的ListView中的图像有问题(C),c#,winforms,listview,C#,Winforms,Listview,我正在创建一个窗口表单UI,它由文件浏览器、组合框和ListView组成,每个项目的第一列都有图像,我使用的ListView视图是详细信息,我已经将图像添加到SmallImageList,已经测试了图像是否为空,并为每个项目设置了图像索引,但图像仍然没有显示 这是我的密码 main_fileView.View = View.Details; string[] files; if (main_dirComboBox.Text != "")

我正在创建一个窗口表单UI,它由文件浏览器、组合框和ListView组成,每个项目的第一列都有图像,我使用的ListView视图是详细信息,我已经将图像添加到SmallImageList,已经测试了图像是否为空,并为每个项目设置了图像索引,但图像仍然没有显示

这是我的密码

        main_fileView.View = View.Details;
        string[] files;
        if (main_dirComboBox.Text != "")
        {
            string parent = main_dirComboBox.Text;
            if (System.IO.Directory.Exists(parent))
            {
                files = System.IO.Directory.GetFiles(parent);
                if (files != null)
                {
                    main_fileView.Items.Clear();
                    ImageList img_list = new ImageList();
                    int n = 0;


                    ImageList small_img_list = new ImageList();
                    ImageList large_img_list = new ImageList();

                    for (int i = 0; i < files.Length; i++)
                    {
                        string file_name = files[i].Substring(files[i].LastIndexOf('\\') + 1, files[i].Length - (files[i].LastIndexOf('\\') + 1));
                        string file_type = file_name.Substring(file_name.LastIndexOf('.'), file_name.Length - file_name.LastIndexOf('.'));
                        //get icon image from system
                        Icon smallicon = Icons.IconFromExtension(file_type, Icons.SystemIconSize.Small);
                        Icon largelicon = Icons.IconFromExtension(file_type, Icons.SystemIconSize.Large);
                        small_img_list.Images.Add(smallicon);
                        large_img_list.Images.Add(largelicon);

                    }

                    main_fileView.SmallImageList = small_img_list;
                    main_fileView.LargeImageList = large_img_list;

                    foreach (string file in files)
                    {

                        string file_name = file.Substring(file.LastIndexOf('\\')+1,file.Length-(file.LastIndexOf('\\')+1));
                        System.IO.FileInfo fileInfo = new System.IO.FileInfo(file);
                        string file_size = fileInfo.Length/1000+" kB";
                        string file_datemodified = fileInfo.LastWriteTime.ToString();
                        string file_createDate = fileInfo.CreationTime.ToString();

                        string[] item_ = { file_name, file_size, file_datemodified, file_createDate };

                        ListViewItem item = new ListViewItem(item_,n);
                        n++;
                        main_fileView.Items.Add(item);

                    }

                }
            }
        }

但结果还是一样,第一列中的每个文本前面都有空格,但没有显示图像

最后编辑

最后我得到了它,这是我的错,问题不在这条代码路径中,在另一条代码路径中创建了新的ImageList,我忘记了在测试之前注释它,这条代码工作正常,谢谢大家的回答


另外,由于声誉太差,我无法在8小时内回答自己的问题

考虑到您在列表视图中显示了在组合框中选择的文件的详细信息,您可以使用详细信息视图。换句话说,您可以在UI上看到网格

在这种情况下,您必须为行指定一个特殊列,并将所需图像推送到该单元格中

您可以在此处查看更复杂的解决方案:


谢谢你的回答,但我想做的只是在第一列显示图像,我认为ListView已经受支持了,是吗?@Carry All:如果你使用Details view,你应该有一列显示图像,一列显示文本。要在需要的每个单元格上操作,请使用ListViewItem的SubItems属性。看看这里:I replace ListViewItem item=new ListViewItem,n;ListViewItem项=新ListViewItemfile_名称,n;item.SubItems.Addfile\u大小;item.SubItems.Addfile_datemodified;item.SubItems.Addfile_createDate;但结果还是一样,图像还是不一样shown@Hans我确实设置了它,使用的方法是:public ListViewItemstring[]items,int imageIndex here,ListViewItem item=new ListViewItemitem,n;
ListViewItem item = new ListViewItem(item_,n);
ListViewItem item = new ListViewItem(file_name, n);
                        item.SubItems.Add(file_size);
                        item.SubItems.Add(file_datemodified);
                        item.SubItems.Add(file_createDate);