Hi every one
i have two forms
Form1 and Form2
in form2 i have a event
Public Class Form2
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox("This is form2")
End Sub
End Class
now i want to removehandler Form2_Load before call it
i found this code for get load delegate
Dim FRM2 As Form = New Form2
Dim assem As [Assembly] = [Assembly].GetExecutingAssembly()
Dim tExForm As Type = assem.GetType("WindowsApplication2.Form2")
Dim exFormAsObj As Object = _
Activator.CreateInstance(tExForm)
Dim evClick As EventInfo = tExForm.GetEvent("Load")
Dim tDelegate As Type = evClick.EventHandlerType
Dim handler As New DynamicMethod( _
"", _
Nothing, _
GetDelegateParameterTypes(tDelegate), _
GetType(Form1) _
)
Dim ilgen As ILGenerator = handler.GetILGenerator()
Dim showParameters As Type() = {GetType(String)}
Dim simpleShow As MethodInfo = _
GetType(MessageBox).GetMethod("Show", showParameters)
ilgen.Emit(OpCodes.Ldstr, _
"This event handler was constructed at run time.")
ilgen.Emit(OpCodes.Call, simpleShow)
ilgen.Emit(OpCodes.Pop)
ilgen.Emit(OpCodes.Ret)
Dim dEmitted As [Delegate] = handler.CreateDelegate(tDelegate)
but when removehandler not works on that
RemoveHandler FRM2.Load, dEmitted
FRM2.ShowDialog()
i try this code but it's not work too
evClick.RemoveEventHandler(FRM2, dEmitted)
FRM2.ShowDialog()
Where is my problem?
thank you.