[英]VB.net Fill Listview with images in a folder
我有一些ini文件,其中包含ini文件的图像名称。 我有这个功能:
Public Function GetAllSongs()
Try
While Me.ListView3.Items.Count > 0
Me.ListView3.Items.Remove(Me.ListView3.Items(0))
Me.ListView3.Columns.Remove(Me.ListView3.Columns(0))
End While
Catch
End Try
If Directory.GetFiles(My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\").Length = 0 Then
ListView3.Columns.Add("Cover", 53, HorizontalAlignment.Left)
ListView3.Columns.Add("Title", 145, HorizontalAlignment.Left) '163
ListView3.Columns.Add("Views", 245, HorizontalAlignment.Left) '163
ListView3.AllowColumnReorder = True
ListView3.Columns(1).DisplayIndex = 1
Dim index As Integer = 0
Dim lvi As New ListViewItem
lvi.ImageIndex = index
lvi.SubItems.Add("Not songs")
lvi.SubItems.Add("Not songs")
ListView3.Items.Add(lvi)
Else
ListView3.Columns.Add("Cover", 100, HorizontalAlignment.Left)
ListView3.Columns.Add("Title", 145, HorizontalAlignment.Left) '163
ListView3.Columns.Add("Views", 145, HorizontalAlignment.Left) '163
Dim di As New DirectoryInfo(My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\")
Dim fiArr As FileInfo() = di.GetFiles()
Dim fri As FileInfo
For Each fri In fiArr
Dim Covername As String = My.Computer.FileSystem.CurrentDirectory & "\Files\Covers\" & Inireader.WertLesen("Details", "ID", My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\" & fri.Name)
Dim Trackname As String = Inireader.WertLesen("Details", "TrackName", My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\" & fri.Name)
Dim Views As String = Inireader.WertLesen("Details", "Views", My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\" & fri.Name)
Dim imgList As New ImageList
ListView3.AllowColumnReorder = True
ListView3.Columns(1).DisplayIndex = 1
imgList.ImageSize = New Size(70, 70)
imgList.Images.Add("Cover", Image.FromFile(Covername & ".jpg"))
ListView3.SmallImageList = imgList
Dim index As Integer = 0
Dim lvi As New ListViewItem
lvi.ImageIndex = index
lvi.SubItems.Add(Trackname)
lvi.SubItems.Add(Views)
ListView3.Items.Add(lvi)
Next fri
End If
End Function
问题:仅显示一个封面,而不显示每个文件的不同封面。
我的ini文件结构:
[Details] ID=6W6H3BCUZ5s5wZlKWdICOc
URL=https://open.spotify.com/track/6W6H3BCUZ5s5wZlKWdICOc?si=5ehoney8QoC-q9FGqeY_ew
TrackName=Shortcut
现在看起来像这样:
我认为这与索引有关。 但是,例如,当我将其从0更改为1时,就没有覆盖了。
您有什么想法,问题出在哪里?
谢谢您最好的问候
在for循环外声明ImageList并在每次迭代后增加计数值。
Try
While Me.ListView3.Items.Count > 0
Me.ListView3.Items.Remove(Me.ListView3.Items(0))
Me.ListView3.Columns.Remove(Me.ListView3.Columns(0))
End While
Catch
End Try
If Directory.GetFiles(My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\").Length = 0 Then
ListView3.Columns.Add("Cover", 53, HorizontalAlignment.Left)
ListView3.Columns.Add("Title", 145, HorizontalAlignment.Left) '163
ListView3.Columns.Add("Views", 245, HorizontalAlignment.Left) '163
ListView3.AllowColumnReorder = True
ListView3.Columns(1).DisplayIndex = 1
Dim index As Integer = 0
Dim lvi As New ListViewItem
lvi.ImageIndex = index
lvi.SubItems.Add("Not songs")
lvi.SubItems.Add("Not songs")
ListView3.Items.Add(lvi)
Else
ListView3.Columns.Add("Cover", 100, HorizontalAlignment.Left)
ListView3.Columns.Add("Title", 145, HorizontalAlignment.Left) '163
ListView3.Columns.Add("Views", 145, HorizontalAlignment.Left) '163
Dim di As New DirectoryInfo(My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\")
Dim fiArr As FileInfo() = di.GetFiles()
Dim fri As FileInfo
Dim imgList As New ImageList
ListView3.AllowColumnReorder = True
ListView3.Columns(1).DisplayIndex = 1
imgList.ImageSize = New Size(70, 70)
ListView3.SmallImageList = imgList
Dim index As Integer = 0
For Each fri In fiArr
Dim Covername As String = My.Computer.FileSystem.CurrentDirectory & "\Files\Covers\" & Inireader.WertLesen("Details", "ID", My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\" & fri.Name)
Dim Trackname As String = Inireader.WertLesen("Details", "TrackName", My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\" & fri.Name)
Dim Views As String = Inireader.WertLesen("Details", "Views", My.Computer.FileSystem.CurrentDirectory & "\Files\Songs\" & fri.Name)
imgList.Images.Add("Cover", Image.FromFile(Covername & ".jpg"))
Dim lvi As New ListViewItem
lvi.ImageIndex = index
'Increase the index
index += 1
lvi.SubItems.Add(Trackname)
lvi.SubItems.Add(Views)
ListView3.Items.Add(lvi)
Next fri
End If
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.