Check if the form is loaded

Why not create a boolean value, and a method to access it..

private bool Ready = false;

public ConstructorMethod()
{
    // Constructor code etc.
    Ready = true;
}

public bool isReady()
{
    return Ready;
}

you can try the following

private bool Is_Form_Loaded_Already(string FormName)
            {
                foreach (Form form_loaded in Application.OpenForms)
                {
                    if (form_loaded.Text.IndexOf(FormName) >= 0)
                    {
                        return true;
                    }
                }
                return false;
            }

you can also look in this

Notification when my form is fully loaded in C# (.Net Compact Framework)?


So you need to consume the forms Shown event:

tempFrm.Shown += (s, e) =>
{
    while(..)
    {
    }
}

But you're going to have another problem. It's going to block the thread. You need to run this while loop on another thread by leveraging a BackgroundWorker or Thread.