質問

単に進行状況バーを埋める機能があります。

private void FillProgressBar(ProgressBar bar, Color c, int percent)
{
    int steps = 10;
    bar.set_Value(0);
    for (int i = 0; i < percent / steps; i++)
    {
        System.Threading.Thread.Sleep(100);
        bar.set_Value((i+1)*10) + bar.get_Value());
        this.Refresh();
    }
}

GUIスレッド(マルチスレッドではなく)から召喚すると、ゆっくりとバーを埋めることが目的です。

しかし、価値は上昇しますが、それはそれをしていないようです。

特定のコントロールまたはフォーム全体を更新する方法に関する提案はありますか? PS:ご覧のとおり、this.refresh()も機能しませんでした。

役に立ちましたか?

解決

使用してみてください

Application.DoEvents();

進行状況バーを更新した後。

もっと DoEvents ここ

他のヒント

現在のコードはメインメッセージループを実行させないため、 WM_PAINT 一つ...

それを行うべきではなく、スレッドを使用し、タイマーを使用してください:UIをブロックしないでください。

使用しないでください Application.DoEvents それは悪いプログラミングの練習であり、存在するべきではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top