3

我有 achecked list box和 athumbnail 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
4

3 回答 3

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
于 2012-10-25T15:32:56.323 回答
2

在 For Each 循环中对其进行过滤:

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")
于 2012-10-25T14:59:46.977 回答
0

将 DirectoryInfo(fullpath).GetFiles 更改为 DirectoryInfo(fullpath).EnumerateFiles() 并为您想要的图像文件扩展名添加搜索模式。
http://msdn.microsoft.com/en-us/library/dd383574.aspx

于 2012-10-25T14:40:45.440 回答