Progressbar waarde

Status
Niet open voor verdere reacties.

hanonymouss

Gebruiker
Lid geworden
7 sep 2011
Berichten
283
Hallo allemaal,

Ik ben bezig met het maken van een kleine back-up programma voor eigen gebruik.

Het kopieren van bestanden met een progressbar van ene naar de andere folder lukt zeer goed.

Maar als ik de totale vooruitgang van mijn progressbar weergeef in een label loopt hij niet helemaal tot 100% of die loopt boven de 100%

Omdat de waarde van mijn progressbar gebaseerd is op het aantal bestanden in de gekopieerde folder.

Dus als in de folder (c:\gekopieerdebestanden) 10 bestanden zitten dan is de waarde van mijn label 10% of als in de folder (c:\gekopieerdebestanden) 200 bestanden zitten dan is de waarde van mijn label 200%

Nu is mijn vraag hoe verzorg ik ervoor dat de label altijd op 100% blijft in de plaats van het aantal bestanden in een folder ?


Code:
progressbar maximum


[CPP] Dim SrcPath As String = c:\test1
Dim Files() As String = Directory.GetFiles(SrcPath)
ProgressBar2.Maximum = Files.Length[/CPP]

progressbar value

[CPP] Dim strFileName As String = ""
Dim bestanden() As String

Dim TgtPath As String = c:\gekopieerdebestanden
Dim SrcPath As String = c:\test1
bestanden = Directory.GetFiles(SrcPath)

For Each s As String In bestanden
strFileName = s
Dim fileName As String = System.IO.Path.GetFileName(strFileName)
Dim destFile As String = System.IO.Path.Combine(TgtPath, fileName)


ProgressBar2.Value = destfile.lenght[/CPP]

label update

[CPP] lblprecent.Text = ProgressBar1.Value.ToString() & "%"[/CPP]


alvast bedankt
 
Laatst bewerkt:
Dat kun je zo doen:

[CPP]Label1.Text = (ProgressBar1.Value / Files.Length) * 100[/CPP]
 
Dank u voor je reactie JoZ1

De code die je me gaf werkt prima en stopt op 100

Alleen is mijn weergave 25.56 i.p.v 25 en zonder % vanachter terwijl ik de teken (%) geplaatst heb ? :confused:
 
Zo dan:

[CPP]Label1.Text = ((ProgressBar1.Value / Files.Length) * 100).ToString & "%"[/CPP]

:)
 
Ik krijg alleen de weergave van 50% als ik grote bestanden kopieer van bijvoorbeeld 50mb en bij kleinere bestanden is dat gewoon 52.51 ofzo
 
En zo dan:[CPP] Math.Round(((ProgressBar1.Value / Max.Value) * 100), 2) & "%" [/CPP]?
 
Stel: je bent bestand 6 van 10 aan het verplaatsen

Manier 1:
Code:
Dim percentage As Integer
percentage = currentFile * 100 / fileCount
6*100/10 == 600/10 == 60

Manier 2:
Code:
Dim percentage As Integer
percentage = (currentFile/fileCount) * 100
(6/10)*100 == (0)*100 == 0

Dit tweede komt door het afronden van integers.
Het zal dus altijd 0 zijn todat je bij file 10 komt wanneer (10/10)*100 == 1*100 == 100.

Als je je code debugged en stap voor stap er door heen kun je na elk verplaatst bestand de waarde van het percentage bekijken.

Het kan zo zijn dat als je 10 bestanden overzet tot en met bestand 9 de progressbar een value 0 heeft en bij bestand 10 pas 100. Maar als het overzetten snel is zul je het niet merken. De balk zal zicht alsnog vloeiend vullen.

Wat je als test kunt doen is nadat je een bestand hebt verplaatst het huidige percentage toevoegen aan een listbox, dan kun je als het klaar is de stappen zien. Dit zal dan 0,0,0,0,0,0,0,0,0,100 zijn bij de 2e berekening.
 
@JoZ1: krijg een fout bij max.value. Is dit files.lenght of iets anders ? Ik heb max.value veranderd naar files.lenght en hij doet het. Of moet dat iets anders voorstellen ?
Dank u voor u hulp
@bloodsheet: dank u voor uw reactie het probleem is opgelost
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan