在vb.net中打开/导入多个文件

在vb.net中打开/导入多个文件,vb.net,Vb.net,好的,我会尽我所能解释这一点 所以我有一个图像缩略图列表查看器。 我需要能够点击一个按钮,它加载完整的目录。问题是加载图像的正常方式,但它们的顺序不正确。1.jpg 10.jpg 100.jpg For Each file As String In My.Computer.FileSystem.GetFiles(appPath + "\" + ConfigurationManager.AppSettings("activedisplay").ToString + "\" + Bf

好的,我会尽我所能解释这一点

所以我有一个图像缩略图列表查看器。 我需要能够点击一个按钮,它加载完整的目录。问题是加载图像的正常方式,但它们的顺序不正确。1.jpg 10.jpg 100.jpg

        For Each file As String In My.Computer.FileSystem.GetFiles(appPath + "\" + ConfigurationManager.AppSettings("activedisplay").ToString + "\" + Bfolder.Text + "\")
        ImageListView1.Items.Add(file)
    Next
于是我四处寻找过滤器

        Dim files = Directory.EnumerateFiles(appPath + "\" + ConfigurationManager.AppSettings("activedisplay").ToString + "\" + Bfolder.Text + "\").
                     Select(Function(s) Path.GetFileName(s)).ToList
    Console.WriteLine("Before: {0}", String.Join(", ", files))

    ' sort the list using the Natural Comparer:
    files.Sort(myComparer)
MsgBox((String.Join(", ", files)))
所以这个脚本将它们按正确的顺序排列1,2,3,4,5。。但是我不知道怎么用这种方式打开它。原因

ImageListViewer1.items.addrange((String.Join(", ", files)))
超载。 与openFileDialog类似,FileNames可以一次打开多个文件,因此我知道这是可能的,但我不想使用对话框。 至此,我需要一种方法将由此生成的文件字符串1.jpg、2.jpg、3.jpg加载到ImageViewerList中

这将以正确的顺序创建文件的字符串“(string.Join(“,”,files))”是否可以从字符串加载文件

For Each file As String In My.Computer.FileSystem.GetFiles(appPath, string
它能够加载文件字符串,它创建的字符串如下 1.jpg、2.jpg、3.jpg继续查找目录中的所有文件

我环顾谷歌寻求帮助,并查看了getfiles上的ms页面,但我没有运气。 如果您能提供任何帮助,我们将不胜感激 提前谢谢
-您需要编写自己的排序函数来对数值进行排序。 我为CustomSort函数引用了。下面的代码对文件名进行排序,对我来说效果很好

Dim Dir As String = appPath + "\" + ConfigurationManager.AppSettings("activedisplay").ToString + "\" + Bfolder.Text + "\"
Dim fileList = New DirectoryInfo(Dir).GetFiles("*.jpg").[Select](Function(o) o.Name).ToList()
Dim sortedList = CustomSort(fileList).ToList()


Public Shared Function CustomSort(list As IEnumerable(Of String)) As IEnumerable(Of String)
    Dim maxLen As Integer = list.[Select](Function(s) s.Length).Max()

    Return list.[Select](Function(s) New With { _
        Key .OrgStr = s, _
        Key .SortStr = Regex.Replace(s, "(\d+)|(\D+)", Function(m) m.Value.PadLeft(maxLen, If(Char.IsDigit(m.Value(0)), " "c, "?"c))) _
    }).OrderBy(Function(x) x.SortStr).[Select](Function(x) x.OrgStr)
End Function

如果您在上使用
选项Strict,那么Visual Studio将能够向您显示代码中存在变量类型不匹配问题的地方。我只想让您知道,对其进行一些更改后,它就可以完美地工作。非常感谢你。感谢您的时间和对解决方案的了解。为我节省了很多时间的压力。有能力在这里私人msg?我不知道关于pvt msg。如果你遇到,一定要告诉我。