VB.NET - Usando o componente ProgressBar
O controle ProgessBar indica visualmente o progresso de uma operação com o passar de um intervalo de tempo. Você pode usá-lo em operações de cópia de arquivos , conexão com a internet , acesso a banco de dados , operações com registros de tabelas , etc.
A classe ProgressBar possui quatro propriedades que são comumente usadas e que não são herdadas do controle ou outra classe base.
Propriedade | Valor do Tipo | Descrição |
Maximum | Integer | O valor máximo do intervalo exibido no controle. O valor padrão é 100 - Read/Write. |
Minimum | Integer | O valor mínimo do intervalo exibido pelo controle. O valor padrão é 0. Read/Write. |
Step | Integer | A quantidade pela qual a barra de progresso é incrementada quanto o método PerformStep é chamado. Valor padrão é zero. Read/Write. |
Value | Integer | A posição atual da barra de progresso. O valor padrão é zero. Read/Write. |
Além destas propriedades o controle possui dois métodos que são geralmente usados:
Vou mostrar um exemplo simples de utilização do controle ProgressBar em um formulário e para isto vou usar o SharpDevelop como ambiente de desenvolvimento.
Nota : Se você ainda não tem o SharpDevolp instalado acesso o link - http://www.sharpdevelop.com/OpenSource/SD/Download/ - e baixe a versão mais recente (5931 Kb). È preciso ter o . NET Framework 1.1 instalado em sua máquina. Você terá uma ótima ferramenta para desenvolver aplicações para a plataforma .NET em C# e VB.NET; uma ferramenta open source (GPL), s e tem uma localização para o Português.
Após ter instalado o SharpDevelop abra o IDE e no menu de opções selecione : Arquivo-Novo-Combine
Na janela Novo Projeto selecione :
O projeto irá constar de um formulário , um botão de comando(Iniciar) , uma Label e um controle ProgressBar.
Ao clicar no botão é disparado um contador que conta até 10.000. A cada 100 é exibido o valor na Label e a barra de Progresso é atualizada. Abaixo temos as figuras da estrutura da aplicação e da mesma em execução:
Agora insira o seguinte código no projeto:
Option Strict On imports System imports System.Drawing imports System.Windows.Forms namespace Macoratti Public Class BarradeProgresso inherits Form dim pb as ProgressBar dim lbl as Label public sub New() Text = "Barra de Progresso" Size = new Size(300,200) dim btn as new Button() btn.Parent = me btn.Text = "&Iniciar" btn.Location = new Point(CType((Size.Width / 2) - (btn.Width / 2), integer), _ CType((Size.Height / 4) - btn.Height, Integer)) AddHandler btn.Click, AddressOf btn_OnClick lbl = new Label() lbl.Parent = me lbl.Size = new Size(100,23) lbl.Location = new Point(CType((Size.Width / 2) - (lbl.Width / 2), integer), btn.Bottom + 25) lbl.BorderStyle = BorderStyle.FixedSingle lbl.TextAlign = ContentAlignment.MiddleCenter lbl.Text = "" pb = new ProgressBar() pb.Parent = me pb.Location = new Point(CType((Size.Width / 8), integer), lbl.Bottom + 25) pb.Size = new Size(CType((Size.Width * 3 / 4), integer), 20) pb.Minimum = 0 ' o valor padrao pb.Maximum = 100 ' o valor padrao end sub 'fecha o construtor private sub btn_OnClick(ByVal sender as object, ByVal e as EventArgs) dim limite as integer = 10000 dim cntr as integer = 0 dim i as integer pb.Value = 0 pb.Step = 1 for i = 0 to limite cntr = cntr + 1 if cntr mod 100 = 0 then lbl.Text = cntr.ToString() pb.PerformStep() Application.DoEvents() System.Threading.Thread.Sleep(40) end if next end sub public shared sub Main() Application.Run(new BarraDeProgresso()) end sub end class end namespace |
Pela estrutura da aplicação percebemos que a barra de progresso (pb) e a Label (lbl) foram declaradas como membros da classe BarraDeProgresso.
No construtor da classe BarraDeProgresso os controles Label , ProgressBar e Button são instanciados e a seguir definimos os valores para localização , tamanho e outras propriedades pertinentes a cada controle. No caso do controle ProgressBar definimos também os valores para Máximo e Mínimo para os valores padrão.
No evento Click do botão de comando além de definirmos o valor de limite da barra de progresso definimos também que a barra de progresso e a etiqueta (Label) serão atualizados a cada 100 valores contados. Isto é feito no seguinte trecho de código :
for i = 0 to limite cntr = cntr + 1 if cntr mod 100 = 0 then lbl.Text = cntr.ToString() pb.PerformStep() Application.DoEvents() System.Threading.Thread.Sleep(40) end if next |
A cada valore de 100 contados ( cntr mod 100) a label e o controle ProgressBar são atualizados.
A seguir chamamos o método estático Application.DoEvents() para permitir que o formulário desenha a si mesmo sem ter que esperar até que o evento Click termine o seu processamento. Se você não chamar o método DoEvents() você não verá a label ser atualizada.
A linha de código System.Threading.Thread.Sleep(40) introduz uma pausa de 40 milisegundos a cada 100 valores contados de forma a permitir que o processamento ocorra em uma velocidade que possa ser observado.
Você pode substituir a linha de código que chama o método PerformSetp por pb.Increment(1) , basta remover também a linha de código que define a propriedade Step. O código ficaria assim :
for i = 0 to limite cntr = cntr + 1 if cntr mod 100 = 0 then lbl.Text = cntr.ToString() pb.Increment(1) Application.DoEvents() System.Threading.Thread.Sleep(40) end if next |
Se você quiser usar o Visual Studio Net , crie um novo projeto do tipo Windows Application e no formulário inclua os controles conforme indicados e no evento click do botão de comando inclua o código abaixo:
Private Sub btnIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIniciar.Click Dim limite As Integer = 10000 Dim cntr As Integer = 0 Dim i As Integer pb.Value = 0 pb.Step = 1 For i = 0 To limite cntr = cntr + 1 If cntr Mod 100 = 0 Then lbl.Text = cntr.ToString() pb.PerformStep() Application.DoEvents() System.Threading.Thread.Sleep(40) End If Next End Sub |
Até o próximo artigo VB.NET
Veja os
Destaques e novidades do
SUPER DVD VB (sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ?? Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#. |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: