视觉c锐利进度栏与背景工人

时间:2011-08-21 01:20:39

标签: c#

我有以下代码在visual c sharp中更新我的进度条。它工作正常,每个百分比的栏移动。但我也有从另一个网站上的帖子获得的代码,假设将进度条值放在进度条的中间作为%百分比。它会显示分秒的进度条值的百分比,但随后会消失。我是c sharp的新手,在pBar值改变后尝试了几个像pBar.update和pBar.refresh的东西。我编辑了一些代码,以便更容易理解。看到下面,一旦我报告进度后台工作程序progresschanged执行再次pBar值更改我看到它更改,并且文本框文本也得到更新,但由于某种原因,进一步下面的代码绘制进度栏中的%文本会被覆盖某种方式。再一次,我看到%一瞬间。你可以看到我的一些评论,我在尝试各种各样的事情,看它是否会重绘%

         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        backgroundWorker1.ReportProgress(10);
        collect_long_process();
        }

         private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        pBar.Value = e.ProgressPercentage;

        txtBox_pBar.Text = "Gathering info";

        int percent = 10;//(int)(((double)pBar.Value / (double)pBar.Maximum) * 100);
        pBar.CreateGraphics().DrawString(percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular),
        Brushes.Black, new PointF(pBar.Width / 2 - 10, pBar.Height / 2 - 7));
    //pBar.Update();
    //Application.DoEvents();
    }

1 个答案:

答案 0 :(得分:3)

那段代码错了。

您需要处理进度条的Paint事件,并在e.Graphics上绘制 否则,下次控件自行绘制时,您的绘图将被覆盖。

一般情况下,你不应该使用CreateGraphics()