Você está offline; aguardando reconexão

Como criar uma barra de progresso suave no translation from VPE for Csharp Visual

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: 323116
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 323088.
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 Microsoft Visual translation from VPE for Csharp suporta 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.

Criar um controle ProgressBar personalizado

  1. Siga estas etapas para criar um novo projeto Windows Control Library no translation from VPE for Csharp Visual:
    1. Inicie o Microsoft Visual Studio.
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Na caixa de diálogo New Project , clique em translation from VPE for Csharp Visual em Tipos de projeto e, em seguida, clique em Windows Forms Control Library em modelos .

      Observação No Visual Studio .NET 2003, clique em projetos do Visual translation from VPE for Csharp em vez de translation from VPE for Csharp Visual .
    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.cs para SmoothProgressBar.cs.
    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 código a seguir ao arquivo SmoothProgressBar.cs, na classe que é derivada de UserControl.

    Observação No Visual Studio .NET 2003, adicione o código ao módulo de classe da classe derivada de UserControl, logo após a seção “ código gerado pelo Windows Form Designer ”.
    int min = 0;	// Minimum value for progress rangeint max = 100;	// Maximum value for progress rangeint val = 0;		// Current progressColor BarColor = Color.Blue;		// Color of progress meterprotected override void OnResize(EventArgs e){	// Invalidate the control to get a repaint.	this.Invalidate();}protected override void OnPaint(PaintEventArgs e){	Graphics g = e.Graphics;	SolidBrush brush = new SolidBrush(BarColor);	float percent = (float)(val - min) / (float)(max - min);	Rectangle rect = this.ClientRectangle;	// Calculate area for drawing the progress.	rect.Width = (int)((float)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();		}public int Minimum{	get	{		return min;	}	set	{		// Prevent a negative value.		if (value < 0)		{			min = 0;		}				// Make sure that the minimum value is never set higher than the maximum value.		if (value > max)		{			min = value;			min = value;		}				// Ensure value is still in range		if (val < min)		{			val = min;		}		// Invalidate the control to get a repaint.		this.Invalidate();	}}public int Maximum{	get	{		return max;	}	set	{		// Make sure that the maximum value is never set lower than the minimum value.		if (value < min)		{			min = value;		}		max = value;		// Make sure that value is still in range.		if (val > max)		{			val = max;		}		// Invalidate the control to get a repaint.		this.Invalidate();	}}public int Value{	get	{		return val;	}	set	{		int oldValue = val;		// Make sure that the value does not stray outside the valid range.		if (value < min)		{			val = min;		}		else if (value > max)		{			val = max;		}		else		{			val = value;		}		// Invalidate only the changed area.		float percent;		Rectangle newValueRect = this.ClientRectangle;		Rectangle oldValueRect = this.ClientRectangle;		// Use a new value to calculate the rectangle for progress.		percent = (float)(val - min) / (float)(max - min);		newValueRect.Width = (int)((float)newValueRect.Width * percent);		// Use an old value to calculate the rectangle for progress.		percent = (float)(oldValue - min) / (float)(max - min);		oldValueRect.Width = (int)((float)oldValueRect.Width * percent);		Rectangle updateRect = new Rectangle();				// Find only the part of the screen that must be updated.		if (newValueRect.Width > oldValueRect.Width)		{			updateRect.X = oldValueRect.Size.Width;			updateRect.Width = newValueRect.Width - oldValueRect.Width;		}		else		{			updateRect.X = newValueRect.Size.Width;			updateRect.Width = oldValueRect.Width - newValueRect.Width;		}		updateRect.Height = this.Height;		// Invalidate the intersection region only.		this.Invalidate(updateRect);	}}public Color ProgressBarColor{	get	{		return BarColor;	}	set	{		BarColor = value;		// Invalidate the control to get a repaint.		this.Invalidate();	}}private void Draw3DBorder(Graphics g){	int PenWidth = (int)Pens.White.Width;	g.DrawLine(Pens.DarkGray, 		new Point(this.ClientRectangle.Left, this.ClientRectangle.Top),		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top));	g.DrawLine(Pens.DarkGray,		new Point(this.ClientRectangle.Left, this.ClientRectangle.Top), 		new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth));	g.DrawLine(Pens.White,		new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth), 		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth));	g.DrawLine(Pens.White,		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top), 		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth));} 					
  3. No menu Build , clique em Build Solution para compilar o projeto.

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 translation from VPE for Csharp Visual em Project Types , clique em Windows Forms Application em modelos e, em seguida, clique em OK .

    Observação No Visual Studio .NET 2003, clique em projetos do Visual translation from VPE for Csharp em vez de translation from VPE for Csharp Visual .
  3. Siga estas etapas para adicionar duas instâncias do controle SmoothProgressBar ao formulário:
    1. No menu Ferramentas , clique em Choose Toolbox Items .

      Observação No Visual Studio .NET 2003, clique em Customize Toolbox em vez de Choose Toolbox Items .
    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 projeto Windows Application.
  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 (this.smoothProgressBar1.Value > 0){	this.smoothProgressBar1.Value--;	this.smoothProgressBar2.Value++;}else{	this.timer1.Enabled = false;} 					
  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 :
    this.smoothProgressBar1.Value = 100;this.smoothProgressBar2.Value = 0;			this.timer1.Interval = 1;this.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.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 323116 - Última Revisão: 08/01/2008 22:53:26 - Revisão: 4.1

Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005 Express Edition

  • kbmt kbsweptvs2008 kbhowtomaster KB323116 KbMtpt
Comentários