2012-10-25 331 views
3

我有一個checked list box和一個thumbnail area來顯示它們,我試圖加載只從特定文件夾中的圖像,需要顯示在縮略圖區域,但問題是有一個thumbs.db文件也是添加到選中的列表框中,我不需要它。從文件夾加載圖像文件

那麼我如何實際加載沒有thumbs.db文件的圖像文件。

這裏是我的代碼:

Private Sub LoadProjectToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LoadProjectToolStripMenuItem.Click 
    Using ofdlg As New Windows.Forms.OpenFileDialog 

     ofdlg.DefaultExt = "trk" 
     ofdlg.Filter = "Project|*.trk" 
     ofdlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 
     If ofdlg.ShowDialog = Windows.Forms.DialogResult.OK Then 

      Dim SaveData As New gCanvasData 
      Using objStreamReader As New StreamReader(ofdlg.FileName) 
       Dim x As New XmlSerializer(GetType(gCanvasData)) 
       SaveData = CType(x.Deserialize(objStreamReader), gCanvasData) 
       objStreamReader.Close() 
      End Using 

      With SaveData 
       'gTSSizer_gAZoom.Value = 100 
       GCanvas1.ImageXYReset() 
       GCanvas1.Image = .Image 
       GCanvas1.gAnnotates = .gAnnotates 
       GCanvas1.RebuildAll() 
       GCanvas1.AssembleBitmap() 
      End With 

      Dim fullpath As String 
      fullpath = Application.StartupPath + "\" & System.IO.Path.GetFileNameWithoutExtension(ofdlg.FileName) + "\" 

      For Each fi As FileInfo In New DirectoryInfo(fullpath).GetFiles 
       CheckedListBox1.Items.Add(Application.StartupPath + "\" & System.IO.Path.GetFullPath(ofdlg.FileName)) 
       For i As Integer = 0 To CheckedListBox1.Items.Count - 1 
        CheckedListBox1.SetItemChecked(i, True) 
        ThumbControl1.AddFolder(fullpath, True) 
       Next i 
      Next 
     End If 
    End Using 
End Sub 

回答

2

找到該溶液在最後:

Dim fullpath As String 
fullpath = Application.StartupPath & "\" & System.IO.Path.GetFileNameWithoutExtension(ofdlg.FileName) + "\" 


Dim FileDirectory As New IO.DirectoryInfo(fullpath) 
Dim FileJpg As IO.FileInfo() = FileDirectory.GetFiles("*.jpg") 
Dim FileGif As IO.FileInfo() = FileDirectory.GetFiles("*.gif") 
Dim FileBmp As IO.FileInfo() = FileDirectory.GetFiles("*.bmp") 

For Each File As IO.FileInfo In FileJpg 
CheckedListBox1.Items.Add(File.FullName) 
Dim str As String 
str = Directory.GetCurrentDirectory() & "\" & "Backup\" 
     Next 
     For Each File As IO.FileInfo In FileGif 
       CheckedListBox1.Items.Add(File.FullName) 
       Dim str As String 
       str = Directory.GetCurrentDirectory() & "\" & "Backup\" 
      Next 
      For Each File As IO.FileInfo In FileBmp 
       CheckedListBox1.Items.Add(File.FullName) 
       Dim str As String 
       str = Directory.GetCurrentDirectory() & "\" & "Backup\" 
      Next 
      For i As Integer = 0 To CheckedListBox1.Items.Count - 1 
       CheckedListBox1.SetItemChecked(i, True) 
      Next i 
0

變化DirectoryInfo的(FULLPATH).GetFiles以DirectoryInfo的(FULLPATH).EnumerateFiles(),並添加一個搜索模式爲你想要的圖像文件擴展名。
http://msdn.microsoft.com/en-us/library/dd383574.aspx

+0

替代地,您可以使用正則表達式在decid前檢查每個文件的文件擴展名是否將文件添加到CheckedListBox1。這樣的正則表達式可以工作:'。* \。(jpg)|(jpeg)|(tif)|(png)|(gif)|(bmp)|(ico)$' – shellster

2

要麼的每個循環內過濾它:

For Each fi As FileInfo In New DirectoryInfo(fullpath).GetFiles 
    If Not {".jpg", ".png", ".bmp"}.Contains(fi.Extension) Then Continue For 
    ' ... 
Next 

或做在的GetFiles:

DirectoryInfo(fullpath).GetFiles(".jpg")