¿Cómo determinar cuándo el control de usuario está completamente cargado y se muestra?

Ya había algunas preguntas similares sobre stackoverflow, pero no encontré la respuesta

Tengo una aplicación que consta de varias páginas con pestañas. En uno de ellos estoy cargando una lista de unas pocas docenas de controles de usuario a la vez. Actualmente lo estoy haciendo en el evento Load y debido a eso tengo un pequeño retraso antes de que se cargue esta página. Lo que quiero hacer es hacer que la interfaz de usuario sea más receptiva y llenar la lista después de que la página esté completamente cargada. ¿Hay alguna forma de rastrear cuando el control de usuario ha cargado completamente su contenido?

VisibleChanged tampoco ayuda, porque se dispara antes de que se muestre cualquier otro control secundario. Eso causa algunos efectos visuales feos cuando algunos de los controles secundarios aún no son visibles cuando comienzo a cargar la lista de controles.

EDITA

Para que quede más claro. Tengo algunos controles secundarios en un contenedor de página y tengo una lista de controles personalizados que intento cargar más tarde. El problema con dos enfoques descritos en varias respuestas a continuación es que cuando empiezo a cargar controles, no permiten que se muestren otros controles secundarios en el contenedor y es por eso que tengo esos efectos feos (y lo estoy haciendo con BackgroundWorker, pero de todos modos tiene que interactuar con el hilo principal para agregar controles a la lista)

Respuestas a la pregunta(3)

Su respuesta a la pregunta