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

问题描述 投票:0回答:1

我花了很多时间尝试在列表视图中实现图像预览。我能实现的最好的结果是为列表视图中的每个项目重复相同的图像,因为下面的代码将仅添加 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);
}
c# listview treenode imagelist
1个回答
0
投票

您从未设置

ListViewItem.ImageIndex
,因此它始终为 0,因此仅显示第一张图像。

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

LargeImageList
仅与 ListView
松散关联。要实际将其 
Images
Items
 连接,您需要设置每个 
Items.ImageIndex
Item
!这样您就可以重复使用许多项目的图像,也可以自由更改项目的图像索引..

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

© www.soinside.com 2019 - 2024. All rights reserved.