ProgressBar für jede einzellne Datei durchlaufen beim kopieren

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    ProgressBar für jede einzellne Datei durchlaufen beim kopieren

    Hallo, ich hab ein kleines Programm geschrieben, welches Dateien von einem Ordner inkl. Unterordner auf einen anderen Speicherplatz kopiert.

    Weiters hab ich auch eine ProgressBar eingebaut, die mir den gesamten Kopierprozess anzeigt.

    Was ich aber auch noch benötige und leider nicht hinbekomme ist, ich möchte eine 2. ProgressBar anzeigen, der mir die einzellnen Dateien durchläuft. Ich komm leider nicht dahinter

    Hier die Subroutine des Kopiervorganges

    VB.NET-Quellcode

    1. Private Sub CopyFiles(ByVal folder As System.IO.DirectoryInfo, ByVal destinationFolder As String)
    2. If Not System.IO.Directory.Exists(destinationFolder) Then
    3. System.IO.Directory.CreateDirectory(destinationFolder)
    4. End If
    5. Dim files As String
    6. files = CStr(My.Computer.FileSystem.GetFiles(ROOTFOLDER, FileIO.SearchOption.SearchAllSubDirectories, "*.*").Count)
    7. For Each fi As System.IO.FileInfo In folder.GetFiles
    8. CopyFileEx(fi.FullName, destinationFolder & "\" & fi.Name, _copyProgressRoutine, 0, 0, 0)
    9. _totalBytesCopied += fi.Length
    10. Label3.Text = "Kopiere: " & fi.Name
    11. Next
    12. For Each di As System.IO.DirectoryInfo In folder.GetDirectories
    13. CopyFiles(di, di.FullName.Replace(ROOTFOLDER, DESTFOLDER))
    14. Next
    15. End Sub


    Und das ist meine ProgressBar

    VB.NET-Quellcode

    1. Private Function CopyProgress(ByVal totalFileSize As Int64, ByVal totalBytesTransferred As Int64, ByVal streamSize As Int64, ByVal streamBytesTransferred As Int64, ByVal dwStreamNumber As Int32, ByVal dwCallbackReason As Int32, ByVal hSourceFile As Int32, ByVal hDestinationFile As Int32, ByVal lpData As Int32) As Int32
    2. ProgressBar1.Value = Convert.ToInt32((_totalBytesCopied + totalBytesTransferred) / _totalFileSize * 100)
    3. Application.DoEvents()
    4. End Function


    Das funktioniert auch, nur möchte ich eben jede einzellne Datei auch mittels einer ProgressBar zusätzlich anzeigen lassen.

    Kann mir hier bitte jemand helfen?

    LG, Andi

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Erstmal die Standardinfo für alle, die .NET-Fragen im VBScript-Bereich posten: [Allgemein] VB.NET, VB6, VBA, VBS — Mit welcher Sprache programmiere ich eigentlich? ;)
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    @m-werk Willkommen im Forum. :?:
    Eine solche Funktionalität ist im Standard-Framework leider nicht vorhanden, Du müsstest Deine Dateien mit Hilfe einer eigenen Prozedur blockweise kopieren und dann entsprechende Informationen generieren und anzeigen.
    Lass das in der 1. Version sein und bringe Dein Programm ohne dies "Nice To Have" zum Laufen. Wenn Du fertig bist und dies immer noch brauchst, reden wir weiter. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke fürs ignorieren - Da frage ich dich gleich noch einmal:

    ErfinderDesRades schrieb:

    Was nützt eine PB, die sich schneller füllt und leert als man gucken kann?
    Wenn du zu dem Schluss kommst, solch nütze nichts, dann bitte Hilfreich für mich, denn ich habe dir erspart, "das blockweise Abarbeiten anzuschauen" (wie immer du das auch anstellen wolltest, das Anschauen)