Usuário com melhor resposta
Progress Bar termina depois do evento

Pergunta
-
Bom dia,
Tenho uma aplicação de carga onde eu uso um For, na tela tem um progress bar que deveria incrementar a cada vez que o for repete. O problema é que o for termina, e ocorrem vários outros eventos que não tem nada a ver com o for.. e o progress bar ainda está carregando.
ja tentei pbCarga.Increment(x + 1), pbCarga.Value += 1... e varias outras formas.
Alguém sabe de alguma forma do progress bar mostrar o valor em tempo real, e terminar antes de começar o outro evento que não tem nada a ver com ele?
pbCarga.Minimum = 0 pbCarga.Maximum = dt.Rows.Count pbCarga.Value = 0 For x As Integer = 0 To dt.Rows.Count - 1 pbCarga.Increment(x + 1) Try With _db .limparParametros() .adicionarParametro("@id_importadora", cbImportadora.SelectedValue) .adicionarParametro("@codigo", cValida.validaString(dt(x)(cbCodigo.Text).ToString())) .adicionarParametro("@descricao", cValida.validaString(dt(x)(cbDescricao.Text).ToString())) .adicionarParametro("@un_por_cx", cValida.validarInt(dt(x)(cbUnidadeCx.Text))) .adicionarParametro("@valor_uni", cValida.validaDouble(dt(x)(cbValor.Text))) End With Select Case _db.getProc("sp_cadastrar_produto")(0)(0).ToString() Case "INSERT" inserts += 1 Case "UPDATE" updates += 1 End Select Catch ex As Exception erros += 1 Dim rowArray(3) As Object rowArray(0) = dt(x)(cbCodigo.Text).ToString().Trim() rowArray(1) = dt(x)(cbDescricao.Text).ToString().Trim() rowArray(2) = dt(x)(cbUnidadeCx.Text).ToString().Trim() rowArray(3) = dt(x)(cbValor.Text).ToString().Trim() dtErro.Rows.Add(rowArray) End Try Next
Respostas
-
É por que você não esta incrementando corretamente o valor, tente dessa maneira:
pbCarga.Minimum = 0 pbCarga.Maximum = dt.Rows.Count pbCarga.Step = 5 For x As Integer = 0 To dt.Rows.Count - 1 Try With _db .limparParametros() .adicionarParametro("@id_importadora", cbImportadora.SelectedValue) .adicionarParametro("@codigo", cValida.validaString(dt(x)(cbCodigo.Text).ToString())) .adicionarParametro("@descricao", cValida.validaString(dt(x)(cbDescricao.Text).ToString())) .adicionarParametro("@un_por_cx", cValida.validarInt(dt(x)(cbUnidadeCx.Text))) .adicionarParametro("@valor_uni", cValida.validaDouble(dt(x)(cbValor.Text))) End With Select Case _db.getProc("sp_cadastrar_produto")(0)(0).ToString() Case "INSERT" inserts += 1 Case "UPDATE" updates += 1 End Select Catch ex As Exception erros += 1 Dim rowArray(3) As Object rowArray(0) = dt(x)(cbCodigo.Text).ToString().Trim() rowArray(1) = dt(x)(cbDescricao.Text).ToString().Trim() rowArray(2) = dt(x)(cbUnidadeCx.Text).ToString().Trim() rowArray(3) = dt(x)(cbValor.Text).ToString().Trim() dtErro.Rows.Add(rowArray)
'Incremento aqui pbCarga.Increment(x) End Try Next
- Editado Mr. GMSOFT sexta-feira, 27 de fevereiro de 2015 12:00
- Sugerido como Resposta Eduardo.RomeroModerator segunda-feira, 2 de março de 2015 12:26
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 2 de março de 2015 12:43
-
Mais esta funcionando correto?, agora você ira configurar o step vai ajustando até chegar onde precisa
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 2 de março de 2015 12:43
-
Isso, ele só precisa ficar dentro do loop
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Will Sancho sexta-feira, 6 de março de 2015 19:20
Todas as Respostas
-
É por que você não esta incrementando corretamente o valor, tente dessa maneira:
pbCarga.Minimum = 0 pbCarga.Maximum = dt.Rows.Count pbCarga.Step = 5 For x As Integer = 0 To dt.Rows.Count - 1 Try With _db .limparParametros() .adicionarParametro("@id_importadora", cbImportadora.SelectedValue) .adicionarParametro("@codigo", cValida.validaString(dt(x)(cbCodigo.Text).ToString())) .adicionarParametro("@descricao", cValida.validaString(dt(x)(cbDescricao.Text).ToString())) .adicionarParametro("@un_por_cx", cValida.validarInt(dt(x)(cbUnidadeCx.Text))) .adicionarParametro("@valor_uni", cValida.validaDouble(dt(x)(cbValor.Text))) End With Select Case _db.getProc("sp_cadastrar_produto")(0)(0).ToString() Case "INSERT" inserts += 1 Case "UPDATE" updates += 1 End Select Catch ex As Exception erros += 1 Dim rowArray(3) As Object rowArray(0) = dt(x)(cbCodigo.Text).ToString().Trim() rowArray(1) = dt(x)(cbDescricao.Text).ToString().Trim() rowArray(2) = dt(x)(cbUnidadeCx.Text).ToString().Trim() rowArray(3) = dt(x)(cbValor.Text).ToString().Trim() dtErro.Rows.Add(rowArray)
'Incremento aqui pbCarga.Increment(x) End Try Next
- Editado Mr. GMSOFT sexta-feira, 27 de fevereiro de 2015 12:00
- Sugerido como Resposta Eduardo.RomeroModerator segunda-feira, 2 de março de 2015 12:26
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 2 de março de 2015 12:43
-
-
Mais esta funcionando correto?, agora você ira configurar o step vai ajustando até chegar onde precisa
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Ricardo Barbosa Cortes segunda-feira, 2 de março de 2015 12:43
-
-
Isso, ele só precisa ficar dentro do loop
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Will Sancho sexta-feira, 6 de março de 2015 19:20
-