Foros del Web » Programación para mayores de 30 ;) » .NET »

Mostrar Barra Progreso al entrar a Tab

Estas en el tema de Mostrar Barra Progreso al entrar a Tab en el foro de .NET en Foros del Web. Hola tengo un form que tiene varias pestañas, en una de ellas llamada CALCULOS ejecuto una rutina que demora como 60 segundos, entonces la idea ...
  #1 (permalink)  
Antiguo 10/01/2011, 16:01
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Mostrar Barra Progreso al entrar a Tab

Hola tengo un form que tiene varias pestañas, en una de ellas llamada CALCULOS ejecuto una rutina que demora como 60 segundos, entonces la idea es que cuando el usuario ingrese a dicha pestaña muestre un PROGRESS BAR mientras carga los datos.

Para ello hice:

Código:
Private Sub TabPage4_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage4.Enter

        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = ContarCalculos(Codigo)
        ProgressBar1.Value = 0

        'Obtengo la informacion nutricional
        'textBox1.Text = mCalc.Calculos(Codigo)
    End Sub
Y dentro de la rutina agrege:
Código:
'Defino instancias
Dim frmCalculos As frmCalculos = frmCalculos.Instance

'Esto va dentro del ciclo que calcula (omito el proceso entero pq es largo)
frmRecetas.ProgressBar1.Value = frmRecetas.ProgressBar1.Value + 1
Pero no resulto como yo esperaba, cuando el usuario entra a la pestaña se queda esta se abre y no muestra nada durante los 60 segundos, luego de eso muestra el PROGRESS BAR que se llena casi de inmediato y muestra los datos.

Alguna sugerencia? gracias.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.
  #2 (permalink)  
Antiguo 10/01/2011, 16:05
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Mostrar Barra Progreso al entrar a Tab

yo hago algo parecido a lo que tu comentas, ando de salida del trabajo porque son las 5 en punto, llego y posteo el code adaptado a lo que muestras. Espero que tengas paciencia porque demorare una hora en llegar . Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 10/01/2011, 19:29
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Mostrar Barra Progreso al entrar a Tab

Te lo agradeceria.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.
  #4 (permalink)  
Antiguo 10/01/2011, 19:50
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Mostrar Barra Progreso al entrar a Tab

Disculpame la demora Highlander, tuve problemas de conexion a internet, ahora, lo que hize fue crear un formulario aparte llamado por ejemplo frmProgreso2.cs dentro de el :

Código vb:
Ver original
  1. Public Delegate Sub trabajo()
  2.  
  3. Public Property Delegado() As trabajo
  4.     Get
  5.         Return m_Delegado
  6.     End Get
  7.     Set
  8.         m_Delegado = Value
  9.     End Set
  10. End Property
  11. Private m_Delegado As trabajo
  12.  
  13. Public Sub New(delegado__1 As trabajo)
  14.     InitializeComponent()
  15.     Delegado = delegado__1
  16. End Sub
  17.  
  18. Private Sub frmProgreso2_Load(sender As Object, e As EventArgs)
  19.     backgroundWorker1.RunWorkerAsync()
  20. End Sub
  21.  
  22. Private Sub backgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs)
  23.     progressBar1.Style = ProgressBarStyle.Marquee
  24.     Delegado()
  25. End Sub
  26.  
  27. Private Sub backgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs)
  28.     progressBar1.Style = ProgressBarStyle.Marquee
  29. End Sub
  30.  
  31. Private Sub backgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
  32.     progressBar1.Style = ProgressBarStyle.Blocks
  33.     DialogResult = DialogResult.OK
  34.     Me.Close()
  35. End Sub

luego para llamar a ese formulario seria por ejemplo en una carga de datos seria de esta manera :

Código vb:
Ver original
  1. Dim proceso As New frmProgreso2(listarDatos)
  2. If proceso.ShowDialog(Me) = DialogResult.OK Then
  3.     dgUsuarios.DataSource = dg1.DataSource
  4. End If

donde listar datos es un sub que hago la carga a un datagrid, que en este caso es dg1, una vez terminado lo paso al datagridview y es ahi donde puedes hacer lo que quieras una vez terminado espero te sea de utilidad, pero ojo que aqui :

Dim proceso As New frmProgreso2(listarDatos) - todo aquel que entre dentro de frm progreso tiene que ser un sub sin paramatros, tiene que tener esta estructura:

Código vb:
Ver original
  1. Public Sub listarDatos() 'Debe ser asi como te dije sin parametro
  2. 'aqui dentro ya haces el llenado a un grid para que luego lo pases los datos
  3.    dg1.DataSource = objusu.LISTADOUSU()
  4. End Sub
si puedes mejorarlo en buena hora, esta hecho con BackgroundWorker, puedes investigar de ello y manejarlo mucho mejor . Espero te sea de utilidad. Saludos!.

PDT: Lo tengo hecho en c# tuve que pasarlo a vb
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 11/01/2011, 08:48
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Mostrar Barra Progreso al entrar a Tab

Gracias por responder, voy ver como lo aplico ya que tiene varias cosas que desconozco.

Saludos.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.

Etiquetas: barra, progreso, tab
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:28.