Maybe you don't understand what "Invalidate" means. I agree, it is a strange word... It means that the screen display of the control is no longer valid, a repaint command is put into the message queue of the OS and the control is repainted the next time when the program is idle.
There are other direct painting methods (Control.Refresh, Control.Refresh) but Invalidate has the advantage that only the last drawing command is executed if several of them would have found their way into the message queue (and this happens quite often).
So the rule is: whenever you want a control to be redrawn call its Invalidate method.