Změna barvy ProgressBaru   otázka

C#, WinForms

Ahoj, už pár hodin zkouším googlit, ale furt nic.

Chtěl bych změnit barvu progressBar1 ze zelené na červenou či na oranžovou, ale ať zkouším co chci a jak chci tak to prostě nejde :(

Zde je můj kód, který nefunguje:

progressBar1.ForeColor = Color.Red;

Předem všem díky :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ve Windows Forms základní .NET frameworková komponenta nepodporuje změnu barvy popředí (ve skutečnosti se totiž renderují nějaké systémové resources - obrázky, a vlastnost ForeColor se ignoruje). Co ale můžete udělat je sehnat si komponentu třetí strany, nebo se postarat o vykreslování sám.

Také můžete odškrtnout Enable Visual Styles ve vlastnostech projektu, dostanete se na look and feel z Windows 98, ale v téhle situaci již myslím měnit ForeColor jde.

Zde je návod jak přepsat překreslovací rutinu ProgressBaru:

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

    protected override void OnPaint(PaintEventArgs e)
    {
        Rectangle rec = e.ClipRectangle;

        rec.Width = (int)(rec.Width * ((double)Value / Maximum)) - 4;
        if(ProgressBarRenderer.IsSupported)
           ProgressBarRenderer.DrawHorizontalBar(e.Graphics, e.ClipRectangle);
        rec.Height = rec.Height - 4;
        e.Graphics.FillRectangle(Brushes.Red, 2, 2, rec.Width, rec.Height);
    }
}

Zdroje:

http://stackoverflow.com/questions/77867...

http://support.microsoft.com/default.asp...;EN-US;323116

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace _180926p

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Klik(object sender, EventArgs e)

{

BackColor = (sender as Control).BackColor;

}

Random nc = new Random();

private void butRandom_Click(object sender, EventArgs e)

{

labB.BackColor = Color.FromArgb(nc.Next(256), nc.Next(256), nc.Next(256));

panB.BackColor = Color.FromArgb(nc.Next(256), nc.Next(256), nc.Next(256));

pibB.BackColor = Color.FromArgb(nc.Next(256), nc.Next(256), nc.Next(256));

}

private void butGray_Click(object sender, EventArgs e)

{

int b = nc.Next(256);

labB.BackColor = Color.FromArgb(b, b, b);

b = nc.Next(256);

panB.BackColor = Color.FromArgb(b, b, b);

b = nc.Next(256);

pibB.BackColor = Color.FromArgb(b, b, b);

}

private void butCD_Click(object sender, EventArgs e)

{

ColorDialog cd = new ColorDialog();

DialogResult dr = cd.ShowDialog();

if (dr == DialogResult.OK)

{

labB.BackColor = cd.Color;

panB.BackColor = cd.Color;

pibB.BackColor = cd.Color;

}

else MessageBox.Show("Trhni si","Prý jsi chtěl barvu?",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

private void Form1_BackColorChanged(object sender, EventArgs e)

{

rtbVýpis.Text = $@"Barva pozadí formuláře:

RGB({BackColor.R},{BackColor.G},{BackColor.B})";

}

private void Form1_Load(object sender, EventArgs e)

{

labB.BackColor = Color.FromArgb(nc.Next(256), nc.Next(256), nc.Next(256));

panB.BackColor = Color.FromArgb(nc.Next(256), nc.Next(256), nc.Next(256));

pibB.BackColor = Color.FromArgb(nc.Next(256), nc.Next(256), nc.Next(256));

BackColor = Color.White;

}

}

}

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback