ProgressBar 的颜色没有改变 c#
Color of ProgressBar is not changing 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
// 1 - green (in progress)
// 2 - red (error)
// 3 - yellow (paused),
SendMessage(progressBar1.Handle, 1040, 2, 0);
实施:
this.Invoke(() => {
progressBar1.Value = progressBar1.Maximum;
progressBar1.Style = ProgressBarStyle.Continuous;
SendMessage(progressBar1.Handle, 1040, 2, 0);
});
我的要求是每次单击按钮时将进度条的颜色更改为红色。我不想注释掉 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
// 1 - green (in progress)
// 2 - red (error)
// 3 - yellow (paused),
SendMessage(progressBar1.Handle, 1040, 2, 0);
实施:
this.Invoke(() => {
progressBar1.Value = progressBar1.Maximum;
progressBar1.Style = ProgressBarStyle.Continuous;
SendMessage(progressBar1.Handle, 1040, 2, 0);
});