2015-05-21 3 views
0

Я разрабатываю программу, которая использует listView и ImageList для отображения изображений из локальной папки. Проблема, с которой я столкнулся: Мой код имеет lstView_un.Items.Clear(); чтобы очистить содержимое списка, прежде чем импортировать какое-либо изображение. Но это добавление предыдущего содержимого к новым или будущим загруженным изображениям. Даже я проверил, очистив список с помощью кнопки и не прояснив ничего.Очистка списков ListView и ImageList не работает?

В чем проблема? пожалуйста, помогите мне решить проблему!

весь код:

lstView_un.Items.Clear(); 
       DateTime d1 = DateTime.Now; 
       DateTime d2 = dtp_unlist.Value; 

       TimeSpan t = d1 - d2; 
       double NrOfDays = t.TotalDays; 


       DateTime dt = DateTime.Now.AddDays(-NrOfDays); 
       lstView_un.Items.Clear(); 
       string imagesPath = @"D:\Face Recognition System\UnknownFace"; 
       string[] extensions = new[] { ".jpg", ".jpeg", ".png" }; 
       var allfiles = Directory.GetFiles(imagesPath); 
       List<FileInfo> files = new List<FileInfo>(); 
       foreach (string f in allfiles) files.Add(new FileInfo(f)); 
       var filesSorted = files.Where(f => extensions.Contains(f.Extension.ToLower())) 
             .Where(f => f.CreationTime < dt) 
             .OrderByDescending(f => f.CreationTime); 
       this.imageList1.ImageSize = new Size(256, 250); 
       this.imageList1.ColorDepth = ColorDepth.Depth32Bit; 
       foreach (FileInfo fileInfo in filesSorted) 
       { 
        try 
        { 
         this.imageList1.Images.Add(fileInfo.Name, 
               Image.FromFile(fileInfo.FullName)); 
        } 
        catch 
        { 
         Console.WriteLine(fileInfo.FullName + " is is not a valid image."); 
        } 
       } 
       this.lstView_un.View = View.LargeIcon; 
       lstView_un.LargeImageList = this.imageList1; 
       lstView_un.Items.Clear(); 
       for (int j = 0; j < this.imageList1.Images.Count; j++) 
       { 
        ListViewItem item = new ListViewItem(); 
        item.ImageIndex = j; 
        item.Text = imageList1.Images.Keys[j].ToString(); 
        this.lstView_un.Items.Add(item); 
       }  
+0

Что добавляется, ListViewItems или изображения? Ваш код перезагружает LV после того, как он очищен, так что это кажется преднамеренным. Но ImageList используется для заполнения LV, и ImageList, по-видимому, добавляется каждый раз. – Plutonix

+0

Кажется, что каждый раз, когда вы его очищаете, вы добавляете новые элементы. Итак, где проблема ?! –

+0

Изображения, которые были загружены ранее, добавляются в списокView при загрузке изображений в списокView. Я не знаю больше о ImageList, я думаю, что он добавит, каким-либо образом, пожалуйста, помогите? – ensberiyu

ответ

0

Всякий раз, когда вы ясно lstView_un добавить следующие 2 строки:

 lstView_un.SmallImageList.Images.Clear(); 
     lstView_un.LargeImageList.Images.Clear(); 

Поскольку вы очистите детали, но не ясно изображения.

+0

Проблема решена. – ensberiyu

Смежные вопросы