我想在线程中更改ProgressBar的颜色。我使用此代码。
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);
答案 0 :(得分:1)
更改您的SetState()
方法,使其使用Invoke()
,如下所示:
public static void SetState(this ProgressBar pBar, int state)
{
pBar.Invoke((MethodInvoker)delegate {
SendMessage(pBar.Handle, 1040, (IntPtr)state, IntPtr.Zero);
});
}
这将使得在拥有ProgressBar的同一UI线程上发生更改,从而消除错误消息。