Visual Basic.NET - Llenado ProgressBar

   
Vista:

Llenado ProgressBar

Publicado por aren (1 intervención) el 22/09/2007 13:08:20
Hola escribo para comentaros mi problema.

Estoy trabajando en una aplicación en Visual Basic .net (Visual studio 2005) en Windows Vista. Mi problema empieza cuando quiero llevar el control de la ejecución de un proceso a través de un progressbar. Los parámetros de configuración del control los tengo claros (al menos eso creo): valorer mínimo, máximo y actual (value).

El progressbar está dentro de un form (Form1) que se despliega cuando comienza el proceso, el cuál se ejecuta desde una clase externa (Cass1) al formulario en el que se encuentra la barra de progreso. De modo que mi código más o menos es:

Class
sub process
form1.progressbar1.minimum=minvalue
form1.progressbar1.maximun=maxvalue
form1.show
for i=minvalue to maxvalue
form1.progressbar1.value=i
form1.progressbar1.update
next
form1.close
end sub
end class

El problema es que la barra de progreso se queda como trabada a mitad de la ejecución, es como si el procesador ejecutara el bucle más rápido y no le diera tiempo a la pantalla de refrescar los datos de la barra (ya que al terminar el proceso el formulario que contiene la barra de proceso se cierra). Esta es la única explicación que yo le encuentro, ya que lo he ejecutado en un procesador más lento y con el sistema operativo Windows XP y funciona perfectamente. El problema aparece cuando lo ejecuto en windows Vista y con el procesador más rápido.

He probado a incluir el "application.doevents" después de la línea en la que actualizo el valor del progressbar y con esto la línea de progreso avanza un poco más pero no llega a completarse del todo.

Bueno esta es mi duda. He revisado los post anteriores y hay uno relativo al uso de progressbar de título problema con progressbar) creo que también desde una clase pero no entiendo del todo la solución. Así que si me podeis ayudar os lo agradecería.

Saludos y gracias

PD Perdón por la extensión del comentario.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Llenado ProgressBar

Publicado por Daniel rocha (1 intervención) el 13/11/2007 19:37:23
Utiliza ..

Dentro del control de evento:

me.miprogressbar.increment(cuanto de incremento entero)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llenado ProgressBar

Publicado por rodrigo (1 intervención) el 28/01/2008 18:53:10
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
i = i + 1
pgb1.Value = i
If i >= 100 Then
Timer1.Enabled = False
End If
End Sub

Esta es la forma más sencilla.
Debes asignarle un valor a la propiedad INTERVAL del timer1 (100 = 1seg)
y su propiedad enable debe ser TRUE en el evento LOAD del formulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llenado ProgressBar

Publicado por Oscar (2 intervenciones) el 20/09/2009 16:37:46
Hola,

Tengo el mismo problema.

En mi caso estoy procesando información de un fichero con unos 5 millones de líneas y que tarda unos 10 segundos en recorrer.

El proceso de lectura del fichero paraliza todo lo que hay en el formulario.

He probado a activar el progressbar antes de comenzar el procesado, pero no hay forma, en cuanto empieza a leer el fichero se paraliza.

¿Encontraste solución al problema?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llenado ProgressBar

Publicado por Ignacio (1 intervención) el 18/01/2011 09:23:38
Te falta agregar las siguientes referencias en base a tu codigo:

for i=minvalue to maxvalue
System.Windows.Forms.Application.DoEvents() ' Esta linea es para k no se congele el 'Form
form1.progressbar1.value=i
' form1.progressbar1.update Este linea no tiene razon de ser
Form1.Progressbar1.refresh ' Se refresca la barra de progreso
next

Ojala y te sirva.

S2...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar