Mentre implementavo la tua soluzione mi è venuta un'idea: e se invece usassi nella Form principale un variabile statica
public static bool frm1Aperta;
e la settassi a true nel formLoad della Form secondaria e a false nel formClose sempre della Form secondaria e poi al click sul Button della Form principale prima di aprire la form secondaria controllassi il valore del flag frm1Aperta?
Mi sembra funzioni come cosa.... o non è molto elegante fare così?