加载时,ProgressBar百分比消失

时间:2014-02-28 18:15:11

标签: c# winforms

当进度条开始加载时,为什么我的进度条百分比文本会消失? 我错过了什么吗?

int percent = (int)(((double)(progressBar1.Value - progressBar1.Minimum) /
                     (double)(progressBar1.Maximum - progressBar1.Minimum)) * 100);
using (Graphics gr = progressBar1.CreateGraphics())
{
    gr.DrawString(percent.ToString() + "%",
    SystemFonts.DefaultFont,
    Brushes.Black,
    new PointF(progressBar1.Width / 2 - (gr.MeasureString(percent.ToString() + "%",
    SystemFonts.DefaultFont).Width / 2.0F),
    progressBar1.Height / 2 - (gr.MeasureString(percent.ToString() + "%",
    SystemFonts.DefaultFont).Height / 2.0F)));

1 个答案:

答案 0 :(得分:0)

要在winforms控件之上绘图,您需要绑定到控件的OnPaint事件并在该事件处理程序中执行绘图。

控件在不同时间重新绘制,例如在调整表单大小时或在更新进度值的情况下。重新绘制控件后会触发此事件。

正如其他人所提到的,如果你试图在另一个时间使用winforms控件,那么在重新绘制控件时它可能会被覆盖。

OnPaint事件提供的PaintEventArgs对象有一个你应该用来绘制的Graphics对象(而不是你使用的CreateGraphics()方法)。