2017-03-12 106 views
0

好吧即時嘗試解釋這最好的我可以。打開/導入多個文件vb.net

所以我有一個列表查看器的圖像縮略圖。 我需要能夠點擊一個按鈕,並加載完整的目錄。問題是正常的方式加載圖像,但他們是失序。 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它看着

IV迪爾繼續爲所有文件看了看周圍的谷歌尋求幫助,並在getfiles上看了ms頁面,但我沒有運氣。 任何方式任何幫助將提前 蘭狐

+0

如果使用'Option Strict On',那麼Visual Studio將能夠告訴你代碼在變量類型不匹配時出現問題的位置。 –

回答

0

你需要編寫自己的排序功能的數值進行排序不勝感激 感謝。 我提到了link,用於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 
+0

我只想讓你知道,對它進行一些更改使它完美地工作。非常感謝你。爲你的時間和知識的解決方案。爲我節省了許多小時的壓力。有沒有能力在這裏私人味精? – Fox243

+0

我不知道pvt消息。如果你遇到,請讓我知道。 –