Both methods do cause a redraw. The only difference is whether this happens synchronously or async.
Control.Invalidate (): basically instruct the OS to redraw the contol. This does not happen immediatly. Control.Refresh (). forces an immediate redraw of the control (and its children)