Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将项添加到VB.NET ListView并按添加顺序显示它们_Vb.net_Image_Sorting_Listview - Fatal编程技术网

将项添加到VB.NET ListView并按添加顺序显示它们

将项添加到VB.NET ListView并按添加顺序显示它们,vb.net,image,sorting,listview,Vb.net,Image,Sorting,Listview,我正在创建一个应用程序启动器,它基本上是一个列表视图,其中包含一组快捷方式文件(即与快捷方式关联的图像,文本是快捷方式的名称)。除了我想做的最后一件事,一切都很顺利。listview中显示的应用程序存储在一个xml文件中,我尝试的是按照应用程序在xml文件中的显示顺序将其添加到listview中,即,这可能不会按字母顺序排列 因此,我从xml文件中读取应用程序名称,找到它的快捷方式lnk文件,从文件中提取图标并将其添加到Listview;使用: lvPrograms.LargeImageList

我正在创建一个应用程序启动器,它基本上是一个列表视图,其中包含一组快捷方式文件(即与快捷方式关联的图像,文本是快捷方式的名称)。除了我想做的最后一件事,一切都很顺利。listview中显示的应用程序存储在一个xml文件中,我尝试的是按照应用程序在xml文件中的显示顺序将其添加到listview中,即,这可能不会按字母顺序排列

因此,我从xml文件中读取应用程序名称,找到它的快捷方式lnk文件,从文件中提取图标并将其添加到Listview;使用:

lvPrograms.LargeImageList = ProgramIcons

Dim item As ListViewItem

Dim FileName = Path.GetFileNameWithoutExtension(shortcutFile.Name)

item = New ListViewItem(FileName, 1)
item.ImageKey = FileName
iconFile = System.Drawing.Icon.ExtractAssociatedIcon(shortcutFile.FullName)

ProgramIcons.Images.Add(FileName, iconFile)
lvPrograms.Items.Add(item)
我还将listView的排序属性设置为None

当代码添加了所有的应用程序后,我希望它们能以我添加它们的顺序出现,但它似乎只是以随机顺序添加它们。。不是我的命令,不是上升还是下降

如果我在调试窗口中检查lvPrograms.Items(X).Text的内容,那么(0)不是我添加的第一个,而(6)不是我添加的第七个

希望这是有意义的,有人能帮我按我添加的顺序列出应用程序吗

干杯

克里斯

有关我的钚的额外信息:

基本上,我的xml被读入一个名为UserAppSettings的对象中,该对象包含一组应用程序对象及其Name属性(如果应用程序的名称正确的话)。此外,ProgramDetails是一种结构,它保存有关快捷方式的各种属性—名称、工作文件夹等

图像列表(如果相关深度为32位和16位)


你能帮我试试吗?。。在lvPrograms.items.add(item)之后,添加这行代码。。。。msgbox(item&vbnewline&lvPrograms.items(lvPrograms.items.count-1).value…并让它在整个过程中运行,以查看项目是否正确输入或是否在运行时进行排序。它们在运行时未进行排序-您需要使用排序方法。LV的视图是什么?感谢回复:-listView的视图是LargeIcon(但尝试了list,没有任何区别)Nefariis-我输入了您建议的行作为MsgBox(item.Text+vbNewLine+lvPrograms.Items(lvPrograms.Items.Count-1.Text),并按App3、App2、App1和App4的顺序向我的xml中添加了4个文件。MsgBox的结果是-“App3+App3”、“App2+App2”、“App1+App1”、“App4+App1”它们出现的顺序实际上是App4,3,2,1,请显示实际的循环
    lvPrograms.Clear()
    ProgramIcons.Images.Clear()
    ProgramIconsSmall.Images.Clear()

    lvPrograms.LargeImageList = ProgramIcons
    lvPrograms.SmallImageList = ProgramIconsSmall


    Dim dir As New System.IO.DirectoryInfo(userShortcutsFolder)

    lvPrograms.BeginUpdate()
    lvPrograms.Sorting = SortOrder.None

    Dim shortcutFile As FileInfo

    For Each AppToShow As Application In UserAppSettings.Applications
        shortcutFile = New FileInfo(userShortcutsFolder + AppToShow.Name + ".lnk")
        addShortcutToListView(shortcutFile)
    Next


    Private Sub addShortcutToListView(shortcutFile As FileInfo)

    Dim CurrentProgram As ProgramDetails
    Dim item As ListViewItem

    CurrentProgram = New ProgramDetails
    With CurrentProgram
        .FullName = shortcutFile.FullName
        .Name = shortcutFile.Name
        .NameWithoutExtension = Path.GetFileNameWithoutExtension(shortcutFile.Name)

        item = New ListViewItem(.NameWithoutExtension, 1)
        .Icon = System.Drawing.Icon.ExtractAssociatedIcon(.FullName)

        getShortcutProperties(CurrentProgram)

        ProgramIcons.Images.Add(.NameWithoutExtension, .Icon)
        ProgramIconsSmall.Images.Add(.NameWithoutExtension, .Icon)

        item.ImageKey = .NameWithoutExtension
    End With

    item.Tag = CurrentProgram

    lvPrograms.Items.Add(item)
    '   MsgBox(item.Text + vbNewLine + lvPrograms.Items(lvPrograms.Items.Count - 1).Text)
End Sub