I have the following code, I put a label in Form_Paint to track the number jump, I see the label jumping continuously but e.Graphics.DrawString(...) only looks once, does anyone know why ?

Code:
public partial class Form1 : Form
    {       
        public Form1()
        {
            InitializeComponent();
            //progressBar1.Visible = false;
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 100;

            this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);

        }
        int iNum = 0;       
        private void btnDrawText_Click(object sender, EventArgs e) //PaintEventArgs e
        {           
            progressBar1.Value = 0;
            progressBar1.Visible = true;
            this.timer1.Interval = 100;
            this.timer1.Enabled = true;           
                       
        }
        private void ShadowedTextPaint(PaintEventArgs e, int num)
        {
            using (Font font1 = new Font("Times New Roman", 250, FontStyle.Bold, GraphicsUnit.Pixel))
            {
                PointF pointF1 = new PointF(310, 270);
                e.Graphics.DrawString(num.ToString(), font1, Brushes.LightGreen, pointF1);               
                lblNum.Text = num.ToString();
            }           
           
        }
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            ShadowedTextPaint(e, iNum);
        }
        private void timer1_Tick(object sender, EventArgs e)
        {           
            if (progressBar1.Value < 100)
            {               
                Random rd = new Random();
                iNum = rd.Next(0, 999);               
                progressBar1.Value++;
            }
            else
            {               
                this.timer1.Enabled = false;
                progressBar1.Visible = false;               
            }
           
        }
  }