当在列表视图中使用作为树节点添加的子项时,显示作为项添加的图像

本文关键字:添加 显示 图像 列表 树节点 视图 | 更新日期: 2023-09-27 17:53:43

我花了很多时间尝试在listview中实现图像预览。我能做到的最好的是在listview中为每个项目重复相同的图像,因为下面的代码将只添加listviewimages()方法中的第一个图像。我尝试使用索引,我得到一个错误,如不能添加项目两次删除第一个实例。如有任何建议,我将不胜感激。

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
        //
        ImageList imageList1 = new ImageList();
        imageList1.ImageSize = new Size(32, 32);
        listView_Families.LargeImageList = listViewImages();
        TreeNode newSelected = e.Node;
        listView_Families.Items.Clear();
        DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;
        ListViewItem.ListViewSubItem[] subItems;
        ListViewItem item = null;
            //If selected is a directory show the following
            foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories())
            {
                item = new ListViewItem(dir.Name, 0);
                subItems = new ListViewItem.ListViewSubItem[]
                    {new ListViewItem.ListViewSubItem(item, "Directory"), 
                     new ListViewItem.ListViewSubItem(item,
                                      dir.LastWriteTime.ToShortTimeString())};

                item.SubItems.AddRange(subItems);
                listView_Families.Items.Add(item);
            }

            //If selected is a File show the following
            foreach (FileInfo file in nodeDirInfo.GetFiles())
            {
                string fileFullName = file.FullName;

                item = new ListViewItem(file.Name, 1);
                subItems = new ListViewItem.ListViewSubItem[]
                {
                  new ListViewItem.ListViewSubItem(item, file.FullName), 
                  new ListViewItem.ListViewSubItem(item, file.Length.ToString())     
                };
                item.SubItems.AddRange(subItems);
                //add items to list view
                listView_Families.Items.Add(item);

            }//end loop

        listView_Families.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
    }

当在列表视图中使用作为树节点添加的子项时,显示作为项添加的图像

您从未将ListViewItem.ImageIndex设置为始终为0,因此仅显示第一张图像。

您应该确定要为每个项目显示哪个图像并设置正确的索引!

LargeImageListListView只有松散关联。要实际连接其ImagesItems,您需要设置每个ItemItems.ImageIndex !这样,您可以重用许多项目的图像,也可以自由地改变一个项目的ImageIndex .

从你的代码我不知道你想如何决定哪个是正确的图像..