0

私はVBにかなり慣れていないので、特定のルーチンを実行する方法を見つけようとしています. 特定のドライブ上のすべてのディレクトリが入力されたチェックリスト ボックスを持つアーカイブ プログラムを作成しています。ユーザーがディレクトリをチェックすると、ディレクトリのサイズを取得してフォームに表示する for ループに入ります。しかし、私が抱えている問題は、4つまたは5つ以上を選択し始めると、すべてのチェック項目を読み取ってファイルサイズを検証しているため、ますます遅くなることです。最後の項目をチェックまたはチェック解除して、現在のサイズを加算/減算できるようにする方法はありますか? これは、チェックされたすべての項目をループする現在のコードです。前もって感謝します。

Dim fsize As Long = 0
Private Sub chklstbxWorkspace_SelectedIndexChanged(sender As Object, e As EventArgs) Handles chklstbxWorkspace.SelectedIndexChanged

    Dim entry As Object

    If chklstbxWorkspace.CheckedIndices.Count > 0 Then
        btnStartArchive.Enabled = True
    Else
        btnStartArchive.Enabled = False
    End If
    lblWorkspaceSize.Text = chklstbxWorkspace.CheckedIndices.Count.ToString & " folders selected."


    For Each entry In chklstbxWorkspace.CheckedItems
        fsize += DirectorySize("w:\" & entry.ToString, True)
        lblWorkspaceSize.Text = chklstbxWorkspace.CheckedIndices.Count.ToString & " folders selected.  " & Format(fsize, "###,###,###,###,##0") & " bytes."
    Next
    Application.DoEvents()
End Sub
4

1 に答える 1