从文件夹加载图像文件

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
3个回答

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")

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

或者,您可以使用正则表达式来检查每个文件的文件扩展名,然后决定是否将该文件添加到CheckedListBox1中。像这样的正则表达式可以工作:.*\.(jpg)|(jpeg)|(tif)|(png)|(gif)|(bmp)|(ico)$ - shellster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接