在进度条中闪烁文字?

时间:2012-05-17 19:21:49

标签: c# progress-bar visual-c#-express-2010

我已经制作了一个很酷的进度条,其中间有文字。这是我的代码:

private void timer2_Tick(object sender, EventArgs e)
{
    progressBar1.Increment(+1);
    int percent = progressBar1.Value;
    progressBar1
        .CreateGraphics()
        .DrawString(
            percent.ToString() + "%", 
            new Font("Arial", (float)8.25, FontStyle.Regular), 
            Brushes.Black, 
            new PointF(progressBar1.Width / 2 - 10, 
            progressBar1.Height / 2 - 7)
        );
    if (progressBar1.Value >= 99)
    {
        timer2.Stop();
        this.Close();
    }
}

由于某种原因,文本显示然后消失和其他奇怪的东西。为什么会这样,我该如何解决?

3 个答案:

答案 0 :(得分:0)

尝试将绘图代码移动到Paint事件中,您基本上是在修改控件的视觉效果,因此您需要处理此操作而不是默认的绘制行为。

答案 1 :(得分:0)

每当重新绘制控件时,您的绘图都会被删除。

相反,您需要设置一个标志,指示是否立即绘制文本,然后处理Paint事件,如果标志为true,则绘制文本。

在计时器标记处理程序中,切换标记并调用Invalidate()

答案 2 :(得分:0)

另一种方法是创建一个UserControll并在进度条顶部使用一个标签,并单独使用它们,这可能更容易做到,几乎不需要任何额外的代码。