I see, you are having a problem in the parenting definition, who owns who.
I would like to give you an idea of how I solved a similar problem:
I created a singleton (shared) class that maintains nothing but an arraylist to hold any instance of a form that I wish it should hold.
If you are not familiar with the concept of a singleton class, it is invoked only once and stays open until all references to it from the app are removed (in my case, until I close the app).
Now, I always add the frmMain as the first entry to this arraylist, then, at any point, I can reference right back to it with code like:
Dim ArrList As ArrayList = SharedForms.FormArrayList
CType(ArrList.Item(0), frmMain).Panel1.Text = "Whatever"
[sorry, I am VB guy, but I am sure you can translate to C#]
That will for sure resolve your referencing problem...
Please let me know if this is helpful to you ...