title: C# Label highlight and remove highlight
body: <p>I'm sure this is something very easy to figure out but I cannot do it. I have a winform with 3 <code>Label</code> inside a <code>Panel</code>. When the form loads, the first <code>Label</code> has a <code>Paint</code> event that draws a rectangle on it. I would like a <code>backgroundWorker</code> to go through each one, wait 5 seconds, restore the <code>Label</code> to normal (redrawing I'm guessing) and then draw a rectangle on the following <code>Label</code>. </p>
  
  <pre><code>public List&lt;Label&gt; GetLabelList()
          {
              return new List&lt;List&gt;()
              {
                  label1,
                  label2,
                  label3,
                  label4
              };
          }
  
  private void bgBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
      {
          var getList = GetLabelList();
  
          for (int i = 0; i &lt; getList.Count; i++)
          {
              if ((bgBackgroundWorker.CancellationPending == true))
              {
                  e.Cancel = true;
                  break;
              }
  
              else
              {
                  Thread.Sleep(5000);
                  getList [i].Paint += RemoveLabelHighlight;
                  getList [i].Invalidate();
  
                  if (i &lt; 2)
                  {
                      getList [i + 1].Paint += AddLabelHighlight;
                      getList [i + 1].Invalidate();
                  }
  
                  bgBackgroundWorker.ReportProgress((i * 10));
              }
          }
      }
  
  private void AddLabelHighlight(object sender, PaintEventArgs e)
      {
          var label = sender as Label;
          e.Graphics.DrawRectangle(new Pen(Color.DeepPink, 8), label.ClientRectangle);
      }
  
      private void RemoveLabelHighlight(object sender, PaintEventArgs e)
      {
          var label = sender as Label; 
          e.Graphics.DrawRectangle(new Pen(Color.Green, 8), label.ClientRectangle); // This should return the Label back to original state
      }
  </code></pre>
  
  <p>This works but when the rectangle is drawn, the label is cut off all the way around. Any suggestions?</p>
  
  <p>Also, I'm sure there is a much better and more efficient way to achieve this, maybe by an <code>EventHandler</code> or something. I'd like some suggestions, if possible.</p>