Ver Mensaje Individual
  #15 (permalink)  
Antiguo 04/07/2013, 13:05
Avatar de angel1993
angel1993
 
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 15 años, 1 mes
Puntos: 22
Respuesta: Correr un ProgressBar o Label en segundo plano en Vb.net

¿Por qué asignas el máximum y el mínimum en el for?
Si Maximun es 100, no puedes poner 101 de value por que supera el máximo, una opción sería, poner el máximo como el total de archivos que vas a recorrer
Código vb:
Ver original
  1. ProgressBar1.Maximum =nFiles.Count

eso por una lado, por otro
¿Por qué?
Código vb:
Ver original
  1. i = CStr(nFiles.Count)
  2. j = CInt(i)

.Count es integer... lo estás convirtiendo en string para meterlo en i y luego otra vez en integer para meterlo en j, para eso haz directamente
Código vb:
Ver original
  1. j = nFiles.Count


De todas formas yo directamente lo haría así

Código vb:
Ver original
  1. Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  2.          Dim nFiles As ObjectModel.ReadOnlyCollection(Of String)
  3.          nFiles = My.Computer.FileSystem.GetFiles(FolderBrowserDialog1.SelectedPath, FileIO.SearchOption.SearchTopLevelOnly, "*.txt")
  4.        
  5.          ProgressBar1.Maximum = nFiles.Count
  6.          ProgressBar1.Minimum = 1
  7.  
  8.          For x = 0 To nFiles.Count - 1
  9.             ProgressBar1.Value = x + 1
  10.          Next
  11.     End Sub

Fíjate que le resto 1 al .Count cuando hago el for, ya que las colecciones empiezan desde 0, así que el for empieza desde 0 hasta el total - 1
empezabas el for desde 1, si el primer elemento es 0, el primer elemento lo ignoras :/
__________________
@angelxab Twiiter

Última edición por angel1993; 04/07/2013 a las 13:15