У меня есть следующий код, который создает кнопку:GetField не работает [События] на кнопке управления
Dim B As New Button
B.Parent = Me
B.Location = New Point(50, 50)
AddHandler B.Click, Sub()
MsgBox("Hi")
End Sub
'I try to get the field info for the click event inorder to get the event handler and remove it
Dim FieldInfo As FieldInfo = B.GetType.GetField("Click", BindingFlags.[Static] Or BindingFlags.NonPublic Or BindingFlags.Public)
Dim obj As Object = FieldInfo.GetValue(Obj_)
Dim EI As EventInfo = Obj_.GetType.GetEvent(EventName)
EI.RemoveEventHandler(Obj_, obj)
но FieldInfo постоянно пустой. Я пробовал со многими именами событий ClickEvent, EventClick ..., но ни один из них не позволил мне получить результат.
Кто-нибудь знает, чего не хватает моему коду, пожалуйста?
Заранее спасибо.
Спасибо за ваш ответ. На самом деле я пытаюсь удалить обработчик событий динамически. Вы знаете, возможно ли это без использования GetField? (Я обновил сообщение) –
Это был полный ответ на ваш первоначальный вопрос. Ваш второй вопрос действительно должен быть, ну, второй вопрос! В любом случае, ответ Нинаняна Калы, похоже, охватывает всю оставшуюся информацию, которую вы просили, http://dkowalski.com/blog/archive/2009/12/22/how-to-get-event-handlers-list -using-reflection.aspx. Примите либо ответ. – tolanj