线程中的颜色ProgressBar

时间:2017-11-01 11:51:38

标签: c#

我想在线程中更改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);

1 个答案:

答案 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线程上发生更改,从而消除错误消息。