ОК, мне потребовалось некоторое время, чтобы прочитать все ответы и ссылки. Вот что я получил от них:
Пример результатов
Принятый ответ отключает визуальные стили, он позволяет вам установить цвет на что угодно, но результат выглядит просто:
Используя следующий метод, вы можете получить что-то вроде этого:
Как сделать
Сначала включите это, если у вас нет: using System.Runtime.InteropServices;
Во-вторых, вы можете либо создать этот новый класс, либо поместить его код в существующий static
неуниверсальный класс:
public static class ModifyProgressBarColor
{
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr w, IntPtr l);
public static void SetState(this ProgressBar pBar, int state)
{
SendMessage(pBar.Handle, 1040, (IntPtr)state, IntPtr.Zero);
}
}
Теперь, чтобы использовать его, просто позвоните:
ModifyProgressBarColor.SetState(progressBar1, 2);
Обратите внимание на второй параметр в SetState, 1 = нормальный (зеленый); 2 = ошибка (красная); 3 = предупреждение (желтый).
Надеюсь, это поможет!