Developing

Introdução

Esse tutorial mostrará como mudar a cor de preenchimento do controle ProgressBar, utilizado para mostrar o progresso, andamento de determinada tarefa ao usuário, em tempo de execução . Infelizmente isso não é possivél com o controle nativo do .NET, sendo assim, será necessário extendermos a classe ProgressBar.

This tutorial will show how to change the fill color of the ProgressBar control, used to show progress, status of a particular task to the user, at runtime. Unfortunately this is not possible with the . NET native control, so we will need to extend the ProgressBar class.

ProgressBar principal form

Change ProgressBar Color

A Classe

Para realizar tal funcionalidade é necessário que extendamos a classe ProgressBar para que se ajuste às nossas necessidades. No caso alterar a cor do ProgressBar em tempo de execução após finalizar o processo. Então crie uma nova classe da sguinte maneira:

    public class NewProgressBar : ProgressBar
    {
        public NewProgressBar()
        {
            this.SetStyle(ControlStyles.UserPaint, true);
        }

        public Brush Color { get; set; }

        protected override void OnPaint(PaintEventArgs e)
        {
            if (Color == null)
                Color = Brushes.Green;

            Rectangle rec = e.ClipRectangle;

            if (ProgressBarRenderer.IsSupported)
                ProgressBarRenderer.DrawHorizontalBar(e.Graphics, e.ClipRectangle);

            rec.Width = (int)(rec.Width * ((double)Value / Maximum)) - 4;
            rec.Height = rec.Height - 4;
            e.Graphics.FillRectangle(Color, 2, 2, rec.Width, rec.Height);
        }
    }

É necessário adicionar os seguites usings na classe:

using System.Windows.Forms;
using System.Drawing;

O Código

Antes do código crie um formulário semelhante ao do incio do post com um botão. Crie o evento Click do botão e o evento Load do form.

No form, adicione os seguinte using:

using System.Threading;

        // Cria objeto a partir da classe que criamos.
        // Este objeto estará disponivél para todos os métodos.
        NewProgressBar newprogressbar = new NewProgressBar();

        private void Form1_Load(object sender, EventArgs e)
        {
            // Informa em que lugar o ProgressBar será adicionado.
            newprogressbar.Location = new Point(109, 122);
            // Adiciona o ProgressBar no formulário.
            this.Controls.Add(newprogressbar);
            // Estilo
            newprogressbar.Style = ProgressBarStyle.Blocks;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
                // Espera para poder incrementar.
                Thread.Sleep(50);
                // Incrementa
                newprogressbar.Value += 1;
            }

            // Aguarda antes de mudar a cor.
            Thread.Sleep(50);
            // Muda a cor do ProgressBar
            newprogressbar.Color = Brushes.Blue;
            // Aguarda.
            Thread.Sleep(1000);

            // Força a mudança de cor.
            newprogressbar.Refresh();
        }

Veja Também

C# – Screenshot

C# – SplitContainer

_____

Não esqueça de deixar seu comentário, critica, elogio, dúvida e etc. Ele é muito importante para a melhoria do blog.
Do not forget to leave your comments, criticism, praise, questions, etc.. It is very important for improving the blog.

Advertisements

Comments on: "C# – Change ProgressBar Color" (5)

  1. […] C# – Change ProgressBar Color […]

  2. […] C# – Change ProgressBar Color […]

  3. […] C# – Change ProgressBar Color […]

  4. Valeu mano! Muito Bom

  5. Velardo said:

    Muito bom, eu tenho essa rotina public class verticalProgressBar : ProgressBar
    {

    protected override CreateParams CreateParams
    {
    get
    {
    CreateParams cp = base.CreateParams;
    cp.Style |= 0x04;
    return cp;
    }
    }
    que faz o progressBar vertical, mas gostaria de conciliar a sua classe com essa, para mudar de cor.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: