D'accord, ça m'a pris un certain temps pour lire toutes les réponses et les liens. Voici ce que j'en ai retiré :
Résultats d'échantillonnage
La réponse acceptée désactive les styles visuels, elle vous permet de définir la couleur à n'importe quoi, mais le résultat semble simple :
En utilisant la méthode suivante, vous pouvez obtenir quelque chose comme ceci à la place :
Comment faire
Tout d'abord, incluez ceci si ce n'est pas déjà fait : using System.Runtime.InteropServices;
Ensuite, vous pouvez soit créer cette nouvelle classe, soit mettre son code dans une classe non générique existante 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);
}
}
Maintenant, pour l'utiliser, appelez simplement :
progressBar1.SetState(2);
Notez le second paramètre dans SetState
, 1 = normal (vert);
2 = erreur (rouge);
3 = avertissement (jaune)
.