0

このコードを使用して、ディレクトリからファイルを一覧表示します。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        rslts = New List(Of String)
        foo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))
        ListBox1.Items.Clear()
        ListBox1.Items.AddRange(rslts.ToArray)
    End Sub

    Dim rslts As List(Of String)

    Private Sub foo(ByVal aDir As String)
        Try

            Dim di As New IO.DirectoryInfo(aDir)
            Dim aryFiles() As IO.FileInfo = di.GetFiles("*.*")
            Dim aryDirs() As IO.DirectoryInfo = di.GetDirectories()

            For Each fi As IO.FileInfo In aryFiles
                rslts.Add(fi.FullName)
            Next

            For Each d As IO.DirectoryInfo In aryDirs
                foo(d.FullName)
            Next

        Catch ex As Exception

        End Try

    End Sub

私はこれを使用Math.Round()したくないので、ファイルのロード中にプログレスバーにインクリメントを追加できます.タイマーを使用する必要があることは知っていますが、慣れていませんMath.Round()

したがって、基本的に、ファイルをリストボックスにロードしている間、実際のプログレスバーは必要ありません。

4

1 に答える 1

1

増分計算を実行する必要はなくProgressBar、すべてを処理します。ProgressBar1コードでの使用方法 ( ):

Private Sub foo(ByVal aDir As String)

    Try
        Dim di As New IO.DirectoryInfo(aDir)
        Dim aryFiles() As IO.FileInfo = di.GetFiles("*.*")
        Dim aryDirs() As IO.DirectoryInfo = di.GetDirectories()

        With ProgressBar1
            .Minimum = 0
            .Maximum = aryFiles.Count + aryDirs.Count
            .Value = 0
            .Step = 1
        End With

        For Each fi As IO.FileInfo In aryFiles
            rslts.Add(fi.FullName)
            ProgressBar1.PerformStep()
        Next

        For Each d As IO.DirectoryInfo In aryDirs
            foo(d.FullName)
            ProgressBar1.PerformStep()
        Next

    Catch ex As Exception

    End Try

End Sub
于 2013-09-28T08:34:19.363 に答える