C# 设置后进度条颜色不更新
我一直在尝试设置标准WinForms进度条的颜色,但也保留了Vista+主题(和动画) 我遇到过这样的情况:C# 设置后进度条颜色不更新,c#,winforms,pinvoke,C#,Winforms,Pinvoke,我一直在尝试设置标准WinForms进度条的颜色,但也保留了Vista+主题(和动画) 我遇到过这样的情况: private static uint PBM_SETSTATE = 0x410; public enum State { Normal = 1, Error = 2, Warning = 3 }; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] static extern
private static uint PBM_SETSTATE = 0x410;
public enum State { Normal = 1, Error = 2, Warning = 3 };
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam);
public static void SetState(ProgressBar progressBar, int nState)
{
SendMessage(progressBar.Handle, PBM_SETSTATE, (IntPtr)nState, IntPtr.Zero);
}
这似乎是可行的,但并非始终如一。有时进度条似乎没有改变颜色,但当窗口稍微调整大小或移离屏幕并返回时,它会改变颜色
为了给这个问题增加一点背景知识,我有一个任务正在执行一个长时间运行的进程,我正在通过同步上下文发送进度条更新
m_oSynchronizationContext.Send(o => { oAction(); }, null);
我认为这是一个刷新问题,我尝试在进度条上调用refresh(),但没有任何区别
有什么想法吗?我会尽力帮忙,但由于不得不查找魔法常数,我被耽搁了。MCVE也会有帮助。非网站链接不好。请制作一个真正的mcve并在这里发布。我会尽力帮助您,但由于不得不查找魔法常数而被耽搁了。MCVE也会有帮助。非网站链接不好。请制作一个真正的mcve并在这里发布。