zu 1.
Application.OpenForms["meinFormName"]
zu 3.
Control.BringToFront (auch ein Form ist ein Control)
zu 2. Zum "Warten" gibt es mehrere unschöne Möglichkeiten. Was davon am wenigsten störend ist, könnte ich höchstens nach Kenntnis des gesamten Aufbaus der Anwendung sagen. Am schönsten wäre eigentlich so etwas:
C#-Quelltext
1:
| MySecondForm secondForm = new MySecondForm(); |
Da kannst du sicher sein, dass die Methode, in der dieser Aufruf steht, erst weitermacht, wenn das Fenster fertig erstellt ist.
Gruß Jürgen