Instead of that, try handling the ProgressBar Paint event: if you don't then the change will cause an invalidate, which will paint over your text...
In addition, you are responsible for Disposing every Graphics object you create:
pbar.CreateGraphics().DrawString(prgVal.ToString(), new Font(FontFamily.GenericSerif, 12), Brushes.Red, new PointF(5, 2));
Will cause a problem when it runs out of handles - which will happen a lot sooner than the Garbage collector gets round to disposing them for you!