Попробуйте подписаться на событие Application.Idle
внутри метода загрузки формы и отмените подписку на него после его вызова.Как это:
public Form()
{
InitializeComponent();
}
private void Form_Load(object sender, EventArgs e)
{
Application.Idle += new EventHandler(Application_Idle);
// any loading prep code here
}
private void Application_Idle(object sender, EventArgs e)
{
Application.Idle -= new EventHandler(Application_Idle);
// additional code here, which is executed *after* controls are visible and loaded
}