Progressbar vbnet

cs_frk206 Messages postés 17 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2013 - 11 mars 2013 à 14:41
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 12 mars 2013 à 14:26
Salut à tous,

je suis un peu débutant vb net , mais je souhate faire un truc.

Sur mon formulaire il y a deux txtbox. L'un s'appelle "source" et l'autre "destination un progressbar, et en fin un bouton "Copier'

Je souhaite quad je clique sur le bouton copier, mon programme copie le fichier dans le textbox source ver le textbox destination et AFFICHE L ETAT DE LAVANCEMENT DE LA COPIE AVEC MON PROGRESSBAR.

La copie marche bien, mais mon souci c'est le progressebar, j'ai essayé vaec un timer mais c'est A LA FIN DE LA COPIE QUE LE TIMER MARCHE

merci de m'aider

extrait de mon code:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If Me.TextBox1.Text <> "" And Me.TextBox2.Text <> "" Then
'copie
Dim total_fichier As Integer = 0
For Each fichier As String In Me.OpenFileDialog1.FileNames
total_fichier = total_fichier + My.Computer.FileSystem.GetFileInfo(fichier).Length
Next
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Maximum = total_fichier
Me.Timer1.Start()
'MsgBox(Me.ProgressBar1.Minimum)
'MsgBox(Me.ProgressBar1.Maximum)
For Each f As String In Me.OpenFileDialog1.FileNames
Me.ProgressBar1.Value = Me.ProgressBar1.Value + My.Computer.FileSystem.GetFileInfo(f).Length
Me.Refresh()
My.Computer.FileSystem.CopyFile(f, Me.TextBox2.Text & "" & System.IO.Path.GetFileName(Me.TextBox1.Text))
Me.Refresh()
Next
Me.Timer1.Stop()
MsgBox("Copie terminée !")
Else
MsgBox("Veuillez remplir tous les champs")

End If
End Sub

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
11 mars 2013 à 19:01
Bonjour,
La copie marche bien, mais mon souci c'est le progressebar, j'ai essayé vaec un timer mais c'est A LA FIN DE LA COPIE QUE LE TIMER MARCHE

je ne vois pas trop ce que viendrait faire un timer dans cette affaire de barre dont la progression doit constater chaque copie effectuée.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
cs_frk206 Messages postés 17 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2013
12 mars 2013 à 08:25
oui, je vous comprends, si je copie plus de DEUX fichier c bon!!!la valeur du progressbar est divvisé en deux cette fois. ou bien tu copie CINQ fichier la progressbar sera aussi mise ajour cinq fois

MAIS si tu copie UN seul fichier de 800MO par exemple, c là k'il n'y apas de progression
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
12 mars 2013 à 14:26
Bonjour,

Je t'ai fait cela tu l'adapteras à tes besoins:

Imports System.IO
Public Class Form1
    Dim cheminsource As String
    Dim chemincible As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If chemincible = "" Then Exit Sub
        'boite dialogue de choix dossier source
        Dim opendir As New FolderBrowserDialog
        With opendir
            .SelectedPath = cheminsource
            .ShowNewFolderButton = False
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                cheminsource = "" & .SelectedPath & "" 'dernier dossier ouvert en mémoire
                Dim di As New IO.DirectoryInfo(.SelectedPath)
                Dim extFi As IO.FileInfo() = di.GetFiles("*.*") 'filtrer les fichiers
                Dim fi As IO.FileInfo
                ' Minimum à 1 
                ProgressBar1.Minimum = 1
                ' Maximum= nombre total de fichier à copier.
                ProgressBar1.Maximum = cheminsource.Length
                ' On initialise la ProgressBar.
                ProgressBar1.Value = 1
                ' On indique le pas.
                ProgressBar1.Step = 1
                Dim x As Integer
                For x = 1 To cheminsource.Length - 1
                    For Each fi In extFi
                        'ListBox1.Items.Add(fi.Name) 'affiche les noms avec extension
                        My.Computer.FileSystem.CopyFile(cheminsource & fi.Name, chemincible & "" & fi.Name, True)
                    Next
                    ProgressBar1.PerformStep()
                Next x
                MessageBox.Show("Copie réussie", "Copie fichier", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                MessageBox.Show("Opération annulée par l'utilisateur!", "Ouverture dossier", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            .Dispose()
        End With
    End Sub
    'boite dialogue de choix dossier cible
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim Ofd As New System.Windows.Forms.FolderBrowserDialog
        Ofd.ShowDialog()
        chemincible = Ofd.SelectedPath
        If chemincible = "" Then
            MessageBox.Show("Opération annulée par l'utilisateur", "Dossier source", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Exit Sub
        End If
    End Sub
End Class




@+ Le Pivert
Rejoignez-nous