için yanlış görüntüler Ben şöyle bir dizinin tüm öğeleri listeleyen bir liste görünümü:ListView her öğe
:Ama bu resimde görebileceğiniz gibi
Sırayla değil, bir görüntü metni tamamen atlandı, ancak görüntünün kendisi hala sırada. o yaklaşık yarım başlayarak listenin altındaki alır
Ama onlar tamamen bu örnekte olduğu gibi, karışık olma başlatmak: Bir görüntüyü tıklandığında doğru önizleme gösterir
Sağ taraftaki görüntü. Bunun görüntülerin büyük miktarda için muazzam yükleme süreleri vardı BackgroundWorker eklenen Önce yüzden,
Dim imgList As New ImageList
Dim imgSize As New Size
Dim count As Integer = 0
Dim imgFilename As String
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'Dim imlTemp As New ImageList
Dim dirFiles() As String = IO.Directory.GetFiles(My.Settings.GalleryLocation)
'Dim item As New ListViewItem
For Each dirFile As String In dirFiles
imgFileName = IO.Path.GetFileName(dirFile)
Dim img As New System.Drawing.Bitmap(dirFile)
Dim imgImage As Image = Image.FromFile(dirFile)
'Dim imgHeight As Integer
'imgHeight = imgImage.Height
imgSize.Width = 120
imgSize.Height = 174
Threading.Thread.Sleep(10)
BackgroundWorker1.ReportProgress(100/((dirFiles.Count + 1) - count), img)
Next
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ListView1.SmallImageList = imgList
ListView1.LargeImageList = imgList
imgList.ImageSize = imgSize
imgList.ColorDepth = ColorDepth.Depth32Bit
ListView1.Items.Add(imgFilename, count)
imgList.Images.Add(e.UserState.Clone)
count += 1
'ListView1.EnsureVisible(ListView1.Items.Count - 1)
End Sub
:
Bu
tüm görüntülerde ben yüklemek için kullanıyorum kodudur Async çalışmasının yapılmasına izin vermek için arka plan çalışmasını yapacağımı düşündüm. Bununla birlikte, görevin başlangıcında bir şey tamamen yanlış gidiyor ve liste boyunca birden çok kez parçalı bir şekilde görünüyor, burada Resim 3'te gösterildiği gibi tamamen dağınık.Neyin yanlış gittiğine dair herhangi bir fikri olan var mı? Ne yapmayı planladığıma çözümler?
Bu bir çekicilik gibi çalışır! Bu detaylı cevap için ve bazı aptalca hatalar için bana yardım ettiğin için teşekkür ederim ... Son bir sorum var: Yine de listeyi yenilemek/yeniden yüklemek istesem listeyi temizlemek zorunda kaldım. tekrar backgroundworker? –
Ayrıca meraktan etrafında bu 2 sıra değiştirilmiş: 'imgList.Images.Add (img.Image) ListView1.Items.Add (img.FileName, imgList.Images.Count - 1) ' ve Başlangıçta olduğu gibi aynı hatayı yapıyordu, bu yüzden sorun hep birlikte miydi? –
@DominikH: Evet, 'ListView' ve 'imgList 'işaretlerini kaldırabilirsiniz ve daha sonra BGW'yi yeniden çalıştırabilirsiniz. –