When the OnPaint will be called is totally dependent on the OS and you should read the documents about Windows Programming and Paint method use. Whenever windows think it needs the control to be painted it sends the Paint method. Your case could be that you are adding a control in one case its transparent and so parent is sent the paint method and other case its not transparent and so its not sent.