2017-01-27 8 views
0

У меня есть связь Listview с imageList и Listview элементы и Imagelist изображения добавляются через цикл while. с dataReader(). проблема заключается в том, что после добавления обоих элементов элемент списка отображается правильно, но 1-е изображение не отображает изображения, начиная с 2nd listview item. Я проверил все в режиме отладки. то я смущен на imagelist, потому что первый раз, когда он работает он показывает COUNT, как 1 то следующий цикл снова он COUNT стал 0 и в следующий раз он 1,2,3,4,5,6 .... и т.д.C# Когда bindList связывается с ListView, imageList 1-е изображение не отображается

private void populate(MySqlDataReader data) 
     { 
      //ImageList 
      ImageList imgList = new ImageList(); 

      //set listview category items as Large icons 
      listView_Category.View = View.LargeIcon; 
      imgList.Images.Clear(); 

      //ADD image list into Listview 
      listView_Category.LargeImageList = imgList; 

      Application.DoEvents(); 

      int i = 0; 
      while (data.Read()) 
      { 
       try 
       { 
        imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/" + data.GetString(2))); 
       } 
       catch (Exception w) 
       { 
        MessageBox.Show(w.Message); 
       } 

       imgList.ImageSize = new Size(100, 100); 
       imgList.ColorDepth = ColorDepth.Depth32Bit; 

       listView_Category.Items.Add(data.GetString(1), i); 
       i++; 

      } 
     } 

Я пытаюсь добавить изображения вручную тоже ... если не работает. только добавление изображений через цикл. это ошибка языка.?

//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-1.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-2.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-3.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-4.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-5.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-6.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-7.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-8.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-9.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-10.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-11.jpg")); 
      //imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-12.jpg")); 

enter image description here

enter image description here

Database

enter image description here

+0

и вы уверены, что image1 и tweleve находятся в папке с таким же именем и и типом файла –

+0

да все они правильны – user3722956

+0

это окна формы приложения или WPF? –

ответ

1

Пожалуйста, попробуйте это этот этот код будет Råd все файлы из папки и добавить показать его в ListView. Вам просто нужно изменить логику для чтения формы DB.

private void Form1_Load(object sender, EventArgs e) 
    { 
     var folderPath = @"c:\images\"; 
     DirectoryInfo dir = new DirectoryInfo(folderPath); 

     var imageList = new ImageList(); 
     foreach (FileInfo file in dir.GetFiles()) 
     { 
      try 
      { 
       imageList.Images.Add(Image.FromFile(file.FullName)); 
      } 
      catch{ 
       Console.WriteLine("This is not an image file"); 
      } 
     } 
     this.listView1.View = View.LargeIcon; 
     imageList.ImageSize = new Size(128, 128); 
     this.listView1.LargeImageList = imageList; 

     for (int j = 0; j < imageList.Images.Count; j++) 
     { 
      ListViewItem item = new ListViewItem(); 
      item.ImageIndex = j; 
      this.listView1.Items.Add(item); 
     } 
    } 
+0

Показать ничего! ... но imglist count = 12. – user3722956

+0

@ user3722956 Вы изменили listview1 на listView_Category. Я использовал свое имя, пожалуйста, chaeck если имена правильные –

+0

да я сделал. только изображения отсутствуют. – user3722956