 VB.NET - 
Usando o componente ProgressBar
 
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 subpublic 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
        NextEnd 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 Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
Referências: