ProgressBar的颜色没有改变c#

我的要求是每当我点击一个按钮时,将进度条的颜色更改为红色。 我不想注释掉Application.EnableVisualStyles()。

所以我尝试使用SendMessage。 我的代码:

[DllImport("user32.dll")] private static extern bool SendMessage(IntPtr hWnd, Int32 msg, Int32 wParam, Int32 lParam); private const Int32 WM_USER = 0x0400; private const Int32 CCM_FIRST = 0x2000; private const Int32 PBM_SETBARCOLOR = WM_USER + 9; private const Int32 PBM_SETBKCOLOR = CCM_FIRST + 1; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { this.Invoke((MethodInvoker)delegate { SendMessage(this.progressBar1.Handle, PBM_SETBARCOLOR, 0, ColorTranslator.ToWin32(Color.Red)); SendMessage(this.progressBar1.Handle, PBM_SETBKCOLOR, 0, ColorTranslator.ToWin32(Color.Red)); progressBar1.Style = ProgressBarStyle.Continuous; progressBar1.Value = progressBar1.Maximum; }); } 

它不起作用。 我不知道为什么。 你可以帮忙吗?

如果要将ProgressBar颜色从初始绿色更改为红色 (这是标准状态 ),您可以简单地执行此操作

https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb760850(v=vs.85).aspx

  // 1040 - PBM_SETSTATE // 2 - red (error), 3 - yellow (paused), 1 - green (in progress) SendMessage(progressBar1.Handle, 1040, 2, 0); 

实施:

  this.Invoke(() => { progressBar1.Value = progressBar1.Maximum; progressBar1.Style = ProgressBarStyle.Continuous; SendMessage(progressBar1.Handle, 1040, 2, 0); });