barra progreso

20/02/2007 - 15:50 por Cristina | Informe spam
Hola!! Tenia una duda...he colocado una barra de progreso en uno de mis forms
y cuando termine m mostrara el contenido de otro d mis forms. Pero...la barra
de progreso se rellena en seguida y al rato m muestra el otro form, como
puedo controlar esto?? q cuand termine la barra m muestre mi form...Entendeis
lo q quiero hacer??Mi codigo es...

With Me.pBar1
.Maximum = 100
.Minimum = 0
.Value = 0
End With

Dim x As Long
For x = Me.pBar1.Minimum To Me.pBar1.Maximum
Me.pBar1.Value = x
Next x
My.Forms.Mostrarcalendario().ShowDialog()
Me.Close()

Q tendria q modificar???Muchas gracias!!

Preguntas similare

Leer las respuestas

#1 Vinchenzo vinç
20/02/2007 - 18:54 | Informe spam
"Cristina" escribió en el mensaje news:
Hola!! Tenia una duda...he colocado una barra de progreso en uno de mis forms
y cuando termine m mostrara el contenido de otro d mis forms. Pero...la barra
de progreso se rellena en seguida y al rato mE muestra el otro form, como
puedo controlar esto?? q cuand termine la barra mE muestre mi form...Entendeis
lo q quiero hacer??Mi codigo es...

With Me.pBar1
.Maximum = 100
.Minimum = 0
.Value = 0
End With

Dim x As Long
For x = Me.pBar1.Minimum To Me.pBar1.Maximum
Me.pBar1.Value = x
Next x
My.Forms.Mostrarcalendario().ShowDialog()
Me.Close()




Hola Cristina,
no está del todo claro lo que dices que quieres hacer.
El código que muestras hace lo que se entiende que quieres hacer, lo único que le falta es añadir en el bucle las operaciones que deben realizarse antes de mostrar el otro formulario, e ir incrementando el valor de la barra de progreso en función de cuantas de las tareas a realizar se han llevado ya a cabo.
Deberás corregir también la asignación del valor máximo para la barra, para que el máximo sea la cantidad de operaciones que se realizarán en el bucle.

Tal como está sólo sirve para "hacer bonito", en cuyo caso deberías añadir una pausa durante las iteraciones, por ejemplo:

System.Threading.Thread.Sleep(Milisegundos)


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr....dotnet.vb
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
Respuesta Responder a este mensaje
#2 Cristina
21/02/2007 - 15:47 | Informe spam
Ahora he puest este codigo

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdAceptar.Click
With Me.pBar1
.Maximum = 100
.Minimum = 0
.Value = 0
End With
Me.Timer1.Interval = 50
Me.Timer1.Start()
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Me.pBar1.Value += 1
If Me.pBar1.Value = Me.pBar1.Maximum Then
Me.Timer1.Stop()
My.Forms.Mostrarcalendario.ShowDialog()
Me.Close()
End If
End Sub

Pero m sigue sin salri, esq el form q quiero abrir tarda mucho ne cargar, xq
tiene mucho codigo, hay q abrir 12datagrid...M podrias explicar un poc mas
com conseguir hacer esto...esq asi lo sigue abriendo un rato despues de
rellenarse la barra y no quiero eso...Muchas gracias!
Respuesta Responder a este mensaje
#3 Vinchenzo vinç
21/02/2007 - 22:09 | Informe spam
"Cristina" escribió en el mensaje news:

Pero m sigue sin salri, esq el form q quiero abrir tarda mucho ne cargar, xq
tiene mucho codigo, hay q abrir 12datagrid...M podrias explicar un poc mas
com conseguir hacer esto...esq asi lo sigue abriendo un rato despues de
rellenarse la barra y no quiero eso...Muchas gracias!



Cristina, no sé si le pasa algo a tu teclado, pero me cuesta entender lo que escribes.

Según entiendo, tienes un formulario desde el que llamarás al "MostrarCalendario", en el cual se cargan 12 DataGrid, y quieres que se muestre el progreso de carga del formulario llamado antes de que se muestre.

Entonces, el "responsable" de mostrar el progreso no es el llamante, sino el llamado, o el procedimiento de carga en su caso. Te sugiero eliminar el temporizador que has añadido y su código relacionado, y dejar en este formulario sólo la llamada al calendario.
Cuando se esté cargando "Mostrarcalendario" debe él mismo ocuparse de indicar el estado del progreso de carga.
Supongo que dependiendo de cómo obtengas el orígen de datos, podrás optar por alguna opción adecuada a tu caso, en lugar de básicamente establecer el máximo valor del ProgressBar a la cantidad de DataGrids, e ir incrementando el valor de progreso en función de los orígenes ya asignados, por ejemplo:
'**********
'···
With My.Forms.FormQueContienePBar1
.Maximum = 12
.Value = 0
'···
Me.DataGrid1.DataSource = Origen: .Value +=1
'···
Me.DataGrid2.DataSource = Origen: .Value +=1
'···
End with
'···
'**********

Si trabajas con la versión 2.0 del Framework tienes la opción de establecer la propiedad '.Style' en Marquee de la barra de progreso, para indicar que se está realizando la carga pero no es posible indicar con exactitud el porcentaje de progreso alcanzado.


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr....dotnet.vb
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida