Você está offline; aguardando reconexão

Como criar uma ProgressBar suave no Visual Basic .NET ou no Visual Basic 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 323088
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 323116.
Para uma versão deste artigo do Microsoft Visual Basic 6.0, consulte 190179.

NESTA TAREFA

Sumário
Este artigo demonstra como criar um simples, personalizado UserControl para criar uma suavização, rolagem controle ProgressBar .

Em versões anteriores do controle ProgressBar , como a versão é fornecido com o controle ActiveX de controles comuns do Microsoft Windows, você pode exibir o andamento em dois modos diferentes. Para controlar esses modos de exibição, use a propriedade de rolagem , que inclui configurações padrão e suaves. Rolagem suave produz um bloco sólido da cor que representa o progresso e rolagem padrão aparece segmentado e é composto de uma série de pequenos blocos ou retângulos.

O controle ProgressBar que acompanha o Visual Basic .NET ou Visual Basic 2005 oferece suporte somente a configuração padrão.

O código de exemplo neste artigo ilustra como criar um controle que suporte as seguintes propriedades:
  • mínimo . Esta propriedade obtém ou define o valor inferior para o intervalo de valores válidos para o andamento. O valor padrão dessa propriedade é zero (0); você não pode definir essa propriedade para um valor negativo.
  • máximo . Esta propriedade obtém ou define o valor superior para o intervalo de valores válidos para o andamento. O valor padrão dessa propriedade é 100.
  • valor . Essa propriedade obtém ou define o nível atual de andamento. O valor deve estar no intervalo que definem propriedades máxima e mínima .
  • ProgressBarColor . Esta propriedade obtém ou define a cor da barra de progresso.
back to the top

Criar um controle de ProgressBar personalizado

  1. Siga estas etapas para criar uma nova biblioteca de controle do Windows projeto em Visual Basic.NET ou em Visual Basic 2005:
    1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Na caixa de diálogo New Project , clique em Projetos do Visual Basic em Tipos de projeto e, em seguida, clique em Windows Control Library em modelos .

      Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
    4. Na caixa nome , digite SmoothProgressBar e, em seguida, clique em OK .
    5. No Project Explorer, renomeie o módulo de classe padrão do UserControl1.vb para SmoothProgressBar.vb.
    6. Na janela Properties para o objeto UserControl , altere a propriedade Name de UserControl1 para SmoothProgressBar .
  2. Neste ponto, você normalmente herda a classe do controle e adicione a funcionalidade adicional para estender um controle existente. No entanto, a classe ProgressBar é sealed e não pode ser herdada. Portanto, você deve criar o controle desde o início.

    Adicione o seguinte código ao módulo de classe do UserControl , logo após a seção "Windows Form Designer gerou código":
    Private min As Integer = 0               ' Minimum value for progress rangePrivate max As Integer = 100             ' Maximum value for progress rangePrivate val As Integer = 0               ' Current progressPrivate barColor As Color = Color.Blue   ' Color of progress meterProtected Overrides Sub OnResize(ByVal e As EventArgs)    ' Invalidate the control to get a repaint.    Me.Invalidate()End SubProtected Overrides Sub OnPaint(ByVal e As PaintEventArgs)    Dim g As Graphics = e.Graphics    Dim brush As SolidBrush = New SolidBrush(barColor)    Dim percent As Decimal = (val - min) / (max - min)    Dim rect As Rectangle = Me.ClientRectangle    ' Calculate area for drawing the progress.    rect.Width = rect.Width * percent    ' Draw the progress meter.    g.FillRectangle(brush, rect)    ' Draw a three-dimensional border around the control.    Draw3DBorder(g)    ' Clean up.    brush.Dispose()    g.Dispose()End SubPublic Property Minimum() As Integer    Get        Return min    End Get    Set(ByVal Value As Integer)        ' Prevent a negative value.        If (Value < 0) Then            min = 0        End If        ' Make sure that the minimum value is never set higher than the maximum value.        If (Value > max) Then            min = Value            min = Value        End If        ' Make sure that the value is still in range.        If (val < min) Then            val = min        End If        ' Invalidate the control to get a repaint.        Me.Invalidate()    End SetEnd PropertyPublic Property Maximum() As Integer    Get        Return max    End Get    Set(ByVal Value As Integer)        ' Make sure that the maximum value is never set lower than the minimum value.        If (Value < min) Then            min = Value        End If        max = Value        ' Make sure that the value is still in range.        If (val > max) Then            val = max        End If        ' Invalidate the control to get a repaint.        Me.Invalidate()    End SetEnd PropertyPublic Property Value() As Integer    Get        Return val    End Get    Set(ByVal Value As Integer)        Dim oldValue As Integer = val        ' Make sure that the value does not stray outside the valid range.        If (Value < min) Then            val = min        ElseIf (Value > max) Then            val = max        Else            val = Value        End If        ' Invalidate only the changed area.        Dim percent As Decimal        Dim newValueRect As Rectangle = Me.ClientRectangle        Dim oldValueRect As Rectangle = Me.ClientRectangle        ' Use a new value to calculate the rectangle for progress.        percent = (val - min) / (max - min)        newValueRect.Width = newValueRect.Width * percent        ' Use an old value to calculate the rectangle for progress.        percent = (oldValue - min) / (max - min)        oldValueRect.Width = oldValueRect.Width * percent        Dim updateRect As Rectangle = New Rectangle()        ' Find only the part of the screen that must be updated.        If (newValueRect.Width > oldValueRect.Width) Then            updateRect.X = oldValueRect.Size.Width            updateRect.Width = newValueRect.Width - oldValueRect.Width        Else            updateRect.X = newValueRect.Size.Width            updateRect.Width = oldValueRect.Width - newValueRect.Width        End If        updateRect.Height = Me.Height        ' Invalidate only the intersection region.        Me.Invalidate(updateRect)    End SetEnd PropertyPublic Property ProgressBarColor() As Color    Get        Return barColor    End Get    Set(ByVal Value As Color)        barColor = Value        ' Invalidate the control to get a repaint.        Me.Invalidate()    End SetEnd PropertyPrivate Sub Draw3DBorder(ByVal g As Graphics)    Dim PenWidth As Integer = Pens.White.Width    g.DrawLine(Pens.DarkGray, _        New Point(Me.ClientRectangle.Left, Me.ClientRectangle.Top), _        New Point(Me.ClientRectangle.Width - PenWidth, Me.ClientRectangle.Top))    g.DrawLine(Pens.DarkGray, _        New Point(Me.ClientRectangle.Left, Me.ClientRectangle.Top), _        New Point(Me.ClientRectangle.Left, Me.ClientRectangle.Height - PenWidth))    g.DrawLine(Pens.White, _        New Point(Me.ClientRectangle.Left, Me.ClientRectangle.Height - PenWidth), _        New Point(Me.ClientRectangle.Width - PenWidth, Me.ClientRectangle.Height - PenWidth))    g.DrawLine(Pens.White, _        New Point(Me.ClientRectangle.Width - PenWidth, Me.ClientRectangle.Top), _        New Point(Me.ClientRectangle.Width - PenWidth, Me.ClientRectangle.Height - PenWidth))End Sub					
  3. No menu Build , clique em Build Solution para compilar o projeto.
back to the top

Criar um aplicativo de cliente de exemplo

  1. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  2. Na caixa de diálogo Add New Project , clique em Projetos do Visual Basic em Project Types , clique em Windows Application em modelos e, em seguida, clique em OK .
  3. Siga estas etapas para adicionar duas instâncias do controle SmoothProgressBar ao formulário:
    1. No menu Ferramentas , clique em Customize Toolbox .
    2. Clique na guia .NET Framework Components .
    3. Clique em Procurar e localize o arquivo SmoothProgressBar.dll, que você criou na seção "Create a Custom ProgressBar Control".
    4. Clique em OK . Observe que o controle SmoothProgressBar é adicionado à caixa de ferramentas.
    5. Arraste duas instâncias do controle SmoothProgressBar da caixa de ferramentas para o formulário padrão do Windows Application projeto.
  4. Arraste um controle Timer da caixa de ferramentas para o formulário.
  5. Adicione o seguinte código ao evento Tick do controle Timer :
    If (Me.SmoothProgressBar1.Value > 0) Then    Me.SmoothProgressBar1.Value -= 1    Me.SmoothProgressBar2.Value += 1Else    Me.Timer1.Enabled = FalseEnd If					
  6. Arraste um controle de botão da caixa de ferramentas para o formulário.
  7. Adicione o seguinte código ao evento Click do controle de botão :
    Me.SmoothProgressBar1.Value = 100Me.SmoothProgressBar2.Value = 0Me.Timer1.Interval = 1Me.Timer1.Enabled = True					
  8. No menu Debug , clique em Iniciar para executar o projeto de exemplo.
  9. Clique no botão. Observe que os indicadores de dois progresso exibir o texto "andamento". Um indicador de progresso exibe o progresso de forma crescente e o outro indicador de progresso exibe o progresso em uma diminuição ou uma forma de contagem regressiva.
back to the top
barra de progresso

Warning: This article has been translated automatically

Propriedades

ID do Artigo: 323088 - Última Revisão: 12/06/2006 22:47:55 - Revisão: 3.3

Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic 2005

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB323088 KbMtpt
Comentários
>