VB.net 用文件夹中的图像填充Listview

雷内主教

我有一些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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在vb.net中显示文件夹/文件中的图像

来自分类Dev

从文件夹加载图像[VB.NET]

来自分类Dev

如何删除vb.net中的Prefetch文件夹?

来自分类Dev

VB.net Listview填充

来自分类Dev

使用vb.net创建文件夹

来自分类Dev

VB.net文件夹路径不起作用

来自分类Dev

在目录vb.net中获取文件和文件夹名称

来自分类Dev

删除vb.net中的子文件夹和文件

来自分类Dev

VB.Net删除文件夹中的所有文件

来自分类Dev

在目录vb.net中获取文件和文件夹名称

来自分类Dev

在TreeView中显示文件夹/文件(VB.NET 2008)

来自分类Dev

在 vb.net 或 c# 中获取 sharepoint 的 listitem 中的列表文件夹

来自分类Dev

vb.net填充多列listview

来自分类Dev

vb.net填充多列listview

来自分类Dev

在启动文件夹(VB.NET)中创建快捷方式

来自分类Dev

在vb.net中以编程方式关闭打开的文件夹

来自分类Dev

VB.NET自动在特定文件夹中包含DLL

来自分类Dev

VB.NET:在列表框中列出所有项目文件夹

来自分类Dev

如何在vb.net中打开带有文件夹的水晶报表

来自分类Dev

在 VisualStudio 中使用 vb.net 在 excel 中打开特定文件夹

来自分类Dev

使用 vb.net 在 Outlook 公用文件夹中搜索

来自分类Dev

如何加快vb.net中listview的填充

来自分类Dev

Google Drive API VB.NET文件夹的父文件夹

来自分类Dev

vb.net图像处理

来自分类Dev

图像数组VB.NET

来自分类Dev

无法从vb.net中的临时文件夹中删除所有文件

来自分类Dev

文件不断回来VB Net

来自分类Dev

用VB.Net下载UWP文件

来自分类Dev

使用vb.net,是否可以找到文件夹及其子文件夹中的所有压缩文件?