Bonjour, dans le cadre d'une copie de fichier, je voudrais créer un pourcentage qui montre l'avancement de la copie du fichier. Quelqu'un peut-il m'aider ?
merci
Bonjour, dans le cadre d'une copie de fichier, je voudrais créer un pourcentage qui montre l'avancement de la copie du fichier. Quelqu'un peut-il m'aider ?
merci
Qui ne tente rien n'a rien !
Ce qui ne nous tue pas nous rends plus fort !!
Mon projet ZELDA en C++/Allegro
http://www.tutoworld.com - Le Forum -
Mes ressources Dotnet (cours, sources, tutos)
--------------------------------------------
+
+
=
Ne pas oublier le Tag!
Celà dépend du traitement que tu effectue pour la copie du fichier
comment procedes-tu ?
J'utilise un petite fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Public Function aa() Dim fi As New FileInfo("E:\Emule\Code lyoko\Saison 1\Code Lyoko - 01 - Teddygozilla.avi") Dim fs As FileStream = fi.OpenRead() Dim fia As New FileInfo("C:\Documents and Settings\DIEDLER\Mes documents\pa.avi") Dim fsa As FileStream = fia.OpenWrite() Dim nBytes As Integer = 100000 Dim ByteArray(nBytes) As Byte Dim nBytesRead As Integer = 0 Do nBytesRead = fs.Read(ByteArray, 0, nBytes) Try fsa.Write(ByteArray, 0, 100000) Catch ex As Exception MsgBox(ex.ToString) End Try Loop While Not nBytesRead < 100000 fia.close fsa.close Return nBytesRead End Function 'Main
Qui ne tente rien n'a rien !
Ce qui ne nous tue pas nous rends plus fort !!
Mon projet ZELDA en C++/Allegro
http://www.tutoworld.com - Le Forum -
Mes ressources Dotnet (cours, sources, tutos)
--------------------------------------------
+
+
=
Ne pas oublier le Tag!
Perso, j'ai pour habitude de faire ce type de traitement dans une Classe à part
Par exemple ici une Classe FileManager qui proposerait une méthode telle que
J'ajouterai aussi une petite classe dérivée de System.EventArgs pour transmettre des paramètres lors du démarrage du traitement
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Function GetBytesFromFile(ByVal filePath, ByVal nLength as Integer) As Byte()
Exemple
Ensuite je manipulerai plusieurs evenement grâce à des délégués
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Public Class ProgressStartingEventArgs Inherits System.EventArgs Private length as Integer Private steps As Double Public ReadOnly Property FullLength() As Integer Get Return Me.length End Get End Property Public ReadOnly Property StepsCount() As Double Get Return Me.steps End Get End Property Public Sub New(ByVal maxByteLength As Integer, ByVal count As Double) MyBase.New() Me.length = maxByteLength Me.steps = count End Sub End Class
Soit basiquement
Puis dans ma classe FileManager, je déclare les 3 evènements
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Delegate Sub ProgressStartingEventHandler(ByVal sender As Object, ByVal e As ProgressStartingEventArgs) Public Delegate Sub ProgressStepingEventHandler() Public Delegate Sub ProgressEndedEventHandler()
Maintenant dans la méthode GetBytesFromFile il suffira de declencher au moment opportun ces differents evenements
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Event ProgressStarting As StartProgressEventHandler Public Event ProgressSteping As ProgressStepingEventHandler Public Event ProgressEnded As ProgressEndedEventHandler
Exemple
L'utilsation graphique dans la Form sera de récupérer simplement ses evenements et de les utiliser pour le paramétrage du Progressbar et sa gestion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Function GetBytesFromFile(ByVal filePath, ByVal nLength as Integer) As Byte() '... 'declencher le Départ du traitement Dim length As Integer = CInt(fs.Length) Dim steps As Double = length/nlength Dim e As New ProgressStartingEventArgs(length, steps) RaiseEvent ProgressStarting(Me, e) '... 'declencher l'evenement à chaque boucle RaiseEvent ProgressStarting() '... 'declencher l'évenement de fin de traitement RaiseEvent ProgressEnded () '... End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private WithEvents MyFileManager As New FileManager Public Sub MyFileManager_ProgressStarting(ByVal sender As Object, ByVal e As ProgressStartingEventArgs) Handles MyFileManager.ProgressStarting 'paramétrer le progressbar à l'aide de e.FullLength et e.StepsCount End Sub Public Sub MyFileManager_ProgressSteping() Handles MyFileManager.ProgressSteping 'par exemple MonProgressBar.PerformStep End Sub Public Sub MyFileManager_ProgressEnded() Handles MyFileManager.ProgressEnded traiter la progression terminée End Sub
merci bcp![]()
![]()
Qui ne tente rien n'a rien !
Ce qui ne nous tue pas nous rends plus fort !!
Mon projet ZELDA en C++/Allegro
http://www.tutoworld.com - Le Forum -
Mes ressources Dotnet (cours, sources, tutos)
--------------------------------------------
+
+
=
Ne pas oublier le Tag!
Partager