You could store the full name of the form , (ex: foo.bar.frmDataEntry) , and use reflection to load the form object.
Let me know if you need more details
[EDIT] Did a google search and came up with what you want here
http://www.debugging.com/bug/8503[
^]
what you need is
Method 3
'frmContractEdit needs to have Inherits System.Windows.Forms.Form in its Class definition (designer)
Dim Form3Type As Type = Type.GetType("Fusion.frmContractEdit", True, True)
MsgBox(Form3Type.AssemblyQualifiedName)
Dim Form3 As Form = CType(Activator.CreateInstance(Form3Type), Form)
Form3.Show()
'Method 4
Dim Form4 As Form = CType(Activator.CreateInstance(Type.GetType("Fusion.frmContractEdit", True, True)), Form)
Form4.Show()
'Method 5
'Pass parameters using overload Activator.CreateInstance Object Paramater Array
'frmLegalServicesEdit(ByVal DD_TablesID As String, ByVal dgdBrow As DataGridView)
Dim FType As Type = Type.GetType ("Fusion.frmLegalServicesEdit", True, True)
Dim Args() As Object = {Me.DD_TablesID, Me.dgdBrow}
Dim Form5 As Form = CType(Activator.CreateInstance(FType, Args), Form)
Form5.Show()
I know its in VB .. but it should be straight forward to convert to C#