OK, il m'a fallu un certain temps pour lire toutes les réponses et les liens. Voici ce que j'en ai retiré:
Exemples de résultats
La réponse acceptée désactive les styles visuels, elle vous permet de définir la couleur à ce que vous voulez, mais le résultat semble clair:

En utilisant la méthode suivante, vous pouvez obtenir quelque chose comme ceci à la place:

Comment
Tout d'abord, incluez ceci si vous ne l'avez pas fait: using System.Runtime.InteropServices;
Deuxièmement, vous pouvez soit créer cette nouvelle classe, soit placer son code dans une static
classe non générique existante :
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);
}
}
Maintenant, pour l'utiliser, appelez simplement:
progressBar1.SetState(2);
Notez le deuxième paramètre dans SetState, 1 = normal (vert); 2 = erreur (rouge); 3 = avertissement (jaune).
J'espère que ça aide!