2015-06-06 4 views
0

Я потратил много времени, пытаясь реализовать предварительные просмотры изображений в списке. Лучшее, что я могу достичь, - это то же изображение, которое повторяется для каждого элемента в списке, поскольку приведенный ниже код просто добавит первое изображение из метода 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); 
    } 

ответ

0

Вы никогда не установите ListViewItem.ImageIndex, так что всегда 0 и, следовательно, только первое изображение показано на рисунке.

Вы должны определить, какое изображение вы хотите отобразить для каждого элемента и установить правильный индекс!

LargeImageList только слабо связан с ListView. Чтобы на самом деле подключить его Images с помощью Items, вам необходимо установить Items.ImageIndex каждого Item! Таким образом, вы можете повторно использовать изображения для многих предметов, а также свободно изменять ImageIndex из Элемента ..

Из кода я не знаю, как вы хотите, чтобы решить, что правое изображение ..