Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Динамическое назначение обработчиков событий Добавлено: 15.01.04 13:10  

Автор вопроса:  Павло

Подскажите, плз, ламеру...

Если в модуле или классе явно указан объект с ключевым словом WithEvents, тогда добавить обработчик событию просто:

AddHandler MyObj.Event, AdressOf MyHandler

А если я получаю объект через Reflection - тут возникают проблемы. Для этого объекта я могу получить EventInfo, у которого есть метод AddEventHandler(target as object, handler as delegate). Но как пользоваться этим методом - мне не понятно. Может кто-то подскажет?

Сейчас я решил проблему следующим образом:

Module MainFunctions

'Заранее инициализирую объект типа Form, чтобы имет доступ к его событиям

Private WithEvents CurForm As Form

'Функция, показывающая форму, имя которой передано из строки

Friend Sub ShowChild(ByVal FormToShow As String)

'Здесь получаю тип своего будущего объекта:

Dim MyType As Type = Type.GetType("ArcadeApplication." + FormToShow)

'Здесь создаю экземпляр полученного типа:

Dim Obj As Object = Activator.CreateInstance(MyType)

CurForm = Obj

.....

AddHandler CurForm.Activated, AddressOf CloseForm

End Sub

'Здесь находится обработчик, который должен вызываться при Активации формы:

Public Sub CloseForm(ByVal sender As Object, ByVal e As System.EventArgs)

........

End Sub

End Module

Но это сработает только если я заранее знаю тип объекта, полученного через Reflection. А если нет?

Добавление такой строчки должно решить проблему. Но я не понимаю как воспользоваться EvInfo.AddEventHandler()????

Dim EvInfo As EventInfo = MyType.GetEvent("Activated")

EvInfo.AddEventHandler()

Если кто-то просвятит буду очень благодарен.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 16.01.04 09:31
А если так?

EvInfo.AddEventHandler Obj, AddressOf MyHandler

Ответить

Номер ответа: 2
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #2 Добавлено: 16.01.04 09:39

Чего, Павел, сам с собой говоришь? Или Вы разные Павлы?

Ответить

Номер ответа: 3
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #3 Добавлено: 16.01.04 09:43

Ага, Вы разные...

Дык там вроде идет наказание за использование похожих ников...

Ответить

Номер ответа: 4
Автор ответа:
 VladDor



Вопросов: 17
Ответов: 47
 Профиль | | #4 Добавлено: 16.01.04 10:18

Если ты заранее не знаешь тип объекта, может сработает преобразование CType(........., Object) или с помощью функции

GetObjectType получить тип объекта а потом его Handлить.

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 16.01.04 11:02
Так у меня ник в HTML оформлен, а у него - нет. Я его уже просил
поменять ник, но он не ответил...

Ответить

Номер ответа: 6
Автор ответа:
 Павло



Вопросов: 8
Ответов: 24
 Профиль | | #6 Добавлено: 16.01.04 15:35

Спасибо за ответы.

To Павел(Admin): по поводу ника я мылил, что у меня profile.asp никак не открывалась, просил изменить самостоятельно. Теперь открылась. За оплошность прошу простить.

А касательно обработчика Obj, addressof MyHandler - не жрет зараза, хочет delegate. Создавал делегата, а он мне говорил, что, мол, делегат должен происходить(must derive) от объекта такого же типа! В этом и запара. Жаль что никто не сталкивался с таким....

 

Ответить

Номер ответа: 7
Автор ответа:
 Павло



Вопросов: 8
Ответов: 24
 Профиль | | #7 Добавлено: 16.01.04 15:35

Спасибо за ответы.

To Павел(Admin): по поводу ника я мылил, что у меня profile.asp никак не открывалась, просил изменить самостоятельно. Теперь открылась. За оплошность прошу простить.

А касательно обработчика Obj, addressof MyHandler - не жрет зараза, хочет delegate. Создавал делегата, а он мне говорил, что, мол, делегат должен происходить(must derive) от объекта такого же типа! В этом и запара. Жаль что никто не сталкивался с таким....

 

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам