Normally painting (screen updates...) is only done during message processing.
That is either
- when your code has run, and no other events are pending
- when you call Application.ProcessMessages
"no other events are pending" means, that even if your ButtonClick has finished, if there is already another click, or a timer, or any other event, then (usually / in most cases) that other event has higher priority than the paint event. The paint event usually waits.
There may be occurrences where - by chance - a control will do paint/screen-update outside of the above schedule. I.e. immediately. But afaik those aren't guaranteed. And maybe aren't even supposed to happen.
Other than this "Repaint" should work immediately.
Not checked, but "Refresh" may include "Repaint".