While writing a custom paint routine you may come across a strange phenomenon where some of the controls on the Winforms are not painting correctly or even appearing at times. This is usually due to Control.Invalidate() being called recursively, and the API tries to keep on painting what is important and defers the painting of other controls such that they do not appear where they should have. This problem is most elusive if Control.DoubleBuffered is set to true, otherwise, it will be obvious for the flickering due to very fast painting on the front buffer.