Como determinar quando o controle do usuário está totalmente carregado e mostrado?

Já havia algumas perguntas semelhantes no stackoverflow, mas ainda não encontrei a resposta

Tenho um aplicativo que consiste em várias guias. Em um deles, estou carregando uma lista de algumas dezenas de controles de usuário por vez. Atualmente, estou fazendo isso no evento Load e, por isso, tenho um pequeno atraso antes que esta página seja carregada. O que eu quero fazer é tornar a interface do usuário mais responsiva e preencher a lista após o carregamento completo da página. Existe alguma maneira de rastrear quando o controle do usuário carregou totalmente o conteúdo?

@VisibleChanged também não ajuda, porque é acionado antes que qualquer outro controle filho seja mostrado. Isso causa alguns efeitos visuais feios quando alguns dos controles filho ainda não estão visíveis quando estou começando a carregar a lista de controle

EDITA

Para tornar mais claro. Eu tenho alguns controles filho em um contêiner de página e uma lista de controles personalizados que estou tentando carregar mais tarde. O problema com as duas abordagens descritas em várias respostas abaixo é que, quando estou começando a carregar controles, eles não permitem que outros controles filhos no container sejam mostrados e é por isso que tenho esses efeitos feios (e estou fazendo isso com BackgroundWorker, mas de qualquer maneira ele precisa interagir com o thread principal para adicionar controles à lista)

questionAnswers(3)

yourAnswerToTheQuestion