I have been using reflection for a while to open up forms dynamically and have been past the form properties and form methods hurdle for quite some time. I just had to raise an event from my form that is being loaded dynamically. A quick article by Dino Esposito on VB2theMax made it relatively easy to add this little bit of functionality into my .net quiver. Since I am doing it a bit differently (using a form, rather than a class) here is how I did it. This isn’t my exact code, since I have stripped out some other trickery that I don’t want to get in the way of what I am trying to show here.
Dim asmAssemblyContainingForm As [Assembly] = [Assembly].LoadFrom(“AssemblyContainingForm.DLL“)
Dim TypeToLoad As Type = asmAssemblyContainingForm.GetType(“assemblynamespace.formclassName”)
Dim GenericInstance As Object
GenericInstance = Activator.CreateInstance(TypeToLoad)
Dim f As Form = CType(GenericInstance, Form)
‘//here is the event setup
Dim frmEventUpdateTree As System.Reflection.EventInfo
‘//“TreeSourceChanged“ is the name of the event being raised from my form
frmEventUpdateTree = TypeToLoad.GetEvent(“TreeSourceChanged”)
‘//create a delegate of the same type as my raised event to a local method named “SetGetNewTreeTrue“Dim frmDel As [Delegate] = [Delegate].CreateDelegate(frmEventUpdateTree.EventHandlerType, Me, “SetGetNewTreeTrue”)
‘//link up my delegate to the dynamic formfrmEventUpdateTree.AddEventHandler(f, frmDel)
Sign up for my newsletter so you don't miss my conference & Pluralsight course announcements!