Group: Forum Members
Posts: 2K,
Visits: 6.6K
|
My brain hurts a lot trying to figure this out. I would like to be able to have a property that defines the type of a form that I will open. I think I have that down:
Property ProjectSelectorType as System.Type
...
End Property
I can set the property with code like (UserContext is a static class, containing the ProjectSelectorType):
UserContext.ProjectSelectorType = GetType(myApp.ProjectSelectorForm)
So far so good. Now I need to open it. I tried this, which didn't work:
Dim frm As Object = Activator.CreateInstance(UserContext.ProjectSelectorType)
Dim mdiParentInfo As System.Reflection.PropertyInfo = UserContext.ProjectSelectorType.GetProperty("MdiParent")
mdiParentInfo.SetValue(frm, MicroFour.StrataFrame.Application.StrataFrameApplication.MainForm, Nothing)
' The next line throws an exception, my guess because Show() has two overloads
Dim showInfo As System.Reflection.MethodInfo = UserContext.ProjectSelectorType.GetMethod("Show")
showInfo.Invoke(frm)
As mentioned, it doesn't like the GetMethod("Show") call.
What am I doing wrong here? Is there a better way to do this?
I also tried interfaces, but I needed to pass an instance of the form implementing the interface. I don't want the form to be instantiated all the time, just when it's needed.
Thanks!
|