Intégration ProgressBar.

Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 15 mars 2007 à 12:26
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 - 15 mars 2007 à 13:59
Bonjour à tous.
Peut on integrer une ProgressBar avec ce code ? Pour pouvoir voir l'évolution du transfert:

Imports System.IO
                Public Class Form1

                Private Sub Button1_Click...  ' Pour obtenir cette procédure, il faut double cliquez sur un bouton
                    copier_dossier_cd( "Install","C:\WINDOWS\system32\M20373")
                ' Pour reprendre ton exemple
                End Sub

                Sub copier_dossier_cd(ByVal dossier_a_copier As String, ByVal dossier_a_coller As String)
    
             ' Exemple : si on veut copier le dossier 'X:\setup\temp\' où X est la lettre du lecteur inconnue
             '           il faut mettre dans la variable dossier_a_copier : 'setup\temp\'
             '           et dans la variable dossier_a_coller par exemple : C:\setup\temp\
             '           il faut donc appeler la fonction comme ceci :
             '           copier_dossier_cd("setup\temp","C:\setup\temp")

                 Dim Fi As DriveInfo     ' Déclare une variable pour obtenir des infos sur un lecteur
                 Dim drives As String() = Environment.GetLogicalDrives() ' Obtiens les lecteurs présents sur la machine
    
                 For i As Integer = 0 To drives.Length - 1   ' Parcours tous les disques présent sur la machine
                 Fi = New DriveInfo(drives(i))   ' Instancie le lecteur pour avoir des infos dessus
                 If Fi.DriveType = DriveType.CDRom Then  ' Vrai si le lecteur est un CD-Rom
                 If My.Computer.FileSystem.DirectoryExists(drives(i) + dossier_a_copier) = True Then
                 ' Vrai si le dossier existe sur le lecteur CD   
                 My.Computer.FileSystem.CopyDirectory(drives(i) + dossier_a_copier, dossier_a_coller)
                    ' Copie le dossier
                     End If
                      End If
                   Next
                   MsgBox("Copie effectuée...", MsgBoxStyle.OkOnly)
               ' Affiche un message quand la copie est terminée...
                End Sub

Merci d'avance.

14 réponses

NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
15 mars 2007 à 12:51
Bonjour


Pour ajouter une ProgressBar à une form :

Dim lBar as new ProgressBar

Me.Controls.Add(lBar)


Sinon, si tu veux voir la progression évite d'utiliser CopyDirectory, car la tu ne vera rien, tu doit le faire toi même.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
15 mars 2007 à 12:59
Donc qu'est ce que je dois faire ???
As tu un code pour copier un dossier à partir d'un CD avec une progress bar pour voir le transfert ?
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 mars 2007 à 13:17
Salut tu trouveras ça dans les options de la méthode copiedirectory.

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 mars 2007 à 13:18
C'est cette méthode:
My.Computer.FileSystem.CopyDirectory(sourceDirectoryName ,destinationDirectoryName ,showUI ,onUserCancel)

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
15 mars 2007 à 13:19
Bonjour


Je n'ai pas de code tout fait.


Si tu veux le faire, créé une form qui contient une ProgressBar accessible en Friend (Propriété Modifier)


Ensuite tu créé une fonction/procédure :


public sub CopyDir(byval pSrc as strint, byval pDest as string)

    Dim lFrm as new FrmProgress 'qui contient ta progressbar

    Dim lPB as ProgressBar=lFrm.PB 'Si ta progressbar s'appelle PB

    lFrm.Show


    Ensuite tu fait la copie comme tu l'entent en utilisant


lPB.Maximum pour définir le max

lPB.Value pour la valeur

N'oublie pas de faire un Application.DoEvents pour actualiser l'affichage.


Et à la fin

   

lPB=nothing

lFrm.Close

lFrm.dispose

lFrm=nothing

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 mars 2007 à 13:23
Exemple:



Dim
UIOption As Microsoft.VisualBasic.FileIO.UIOption
Dim UICancelOption As Microsoft.VisualBasic.FileIO.UICancelOption

Public




Sub CopyDirectory(ByVal sourceDirectoryName AsString, _
ByVal destinationDirectoryName AsString, _
ByVal showUI As FileIO.UIOption, _
ByVal onUserCancel As FileIO.UICancelOption)



End Sub

Private Sub....
CopyDirectory("RépertoireAcopier", "RépertoireDeDestination", UIOption.AllDialogs, UICancelOption.DoNothing)


End Sub




 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
15 mars 2007 à 13:35
Et ça marche pour des dossiers contenus sur CD ???
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 mars 2007 à 13:38
Je ne sais pas test pour voir! Ce sera peut être juste copyfile au lieu de copy directory tout dépend si ce sont des fichiers ou des répertoires!
 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
15 mars 2007 à 13:40
Ce sont des repertoires à copier.
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 mars 2007 à 13:41
Pour les fichiers ce sera cette méthode:
My.Computer.FileSystem.CopyFile(sourceFileName ,destinationFileName ,showUI ,onUserCancel)

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
15 mars 2007 à 13:42
J'ai mis ça comme code:
Public Class Form1
    Public Sub CopyDirectory(ByVal sourceDirectoryName As String, _
    ByVal destinationDirectoryName As String, _
    ByVal showUI As FileIO.UIOption, _
    ByVal onUserCancel As FileIO.UICancelOption)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim UIOption As Microsoft.VisualBasic.FileIO.UIOption
        Dim UICancelOption As Microsoft.VisualBasic.FileIO.UICancelOption
        CopyDirectory("RépertoireAcopier", "RépertoireDeDestination", UIOption.AllDialogs, UICancelOption.DoNothing)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       
    End Sub
End Class

Et ça me dit que "UICancelOption" et "UIOption" sont des variables locales inutilisées ?!
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 mars 2007 à 13:46
il faut les déclaré tout en haut et non dans un private sub sinon tu ne pas les utilisés ailleurs.

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
15 mars 2007 à 13:48
Ok ça marche. Et si le dossier à copier est sur CD, comment fait on pour récuperer la lettre du lecteur et l'integrer ?
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
15 mars 2007 à 13:59
Avec ce code je copie les fichiers qui se trouvent sur une clé USB:



Private



Sub
test()


Dim
list

As
System.Collections.ObjectModel.ReadOnlyCollection(

Of



String
)


'Parcours tous les fichiers du répertoire

list =




My
.Computer.FileSystem.GetFiles(

"E:"
, FileIO.SearchOption.SearchTopLevelOnly)


'FileIO.SearchOption.SearchAllSubDirectories permet également de parcourir les sous répertoires






Dim
pathname

As



String






Dim
splitname()

As



String






For



Each
pathname

In
listsplitname = Split(pathname,


""
, -1, CompareMethod.Text)


My
.Computer.FileSystem.CopyFile(pathname,

"C:\testcopie"
& splitname(1), UIOption.AllDialogs, UICancelOption.DoNothing)


Next

End
Sub




 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Rejoignez-nous